2010-03-08 7 views
0

성공적인 양식 제출시 닫으려는 팝업 양식이 있습니다. 현재 우리는 서버 측에서만 유효성을 검증하고 있습니다.이 클래스는 .error_message 클래스와 함께 유효성 검증 오류의 순서가 지정되지 않은 목록을 작성합니다.성공적인 양식 제출 후 jQuery 닫기 팝업

양식이 성공적으로 제출되면 창을 닫으려고합니다.

현재 제가 사용하고있는 jQuery는 다음과 같습니다. 처음으로 양식이 제출되면 오류 메시지 수가 항상 0이되기 때문에 작동하지 않습니다.

$(document).ready(function() { 

$('form#emailQuote').submit(function() { 

    var $emailErrors = $('form#emailQuote ul.error_message').length; 

    alert($emailErrors); 

    if ($emailErrors == 0) { 
     //window.close(); 
     alert('no errors'); 

    } else { 
     //alert('errors'); 
     alert('errors'); 
    }  
}); 

});

답변

1

당신은 같은 것을 할 수있다 (여기에 서버 측에서 사용하는 PHP는,하지만 아무것도 할 수 있습니다) :

<form onsubmit="javascript:do_submit(); return false;" method="post" > 
.... 
</form> 

<script type="text/javascript"> 
function do_submit() 
{ 
    var params = {"param1":$("elem1").val(), "param2":$("elem2").val(), ....}; 
    $.ajax 
    ({ 
     url:"ajax_handler.php", 
     type:"POST",      
     data:params, 
     success: function(retval) 
     {        
     var err_code; 
     if (! $.browser.msie) 
     { 
      if ($('error_code:first',retval)) 
      { 
      err_code = $('error_code:first',retval).text(); 
      //check err_code and show error, or redirect to a different page ,or close window    
      } 
      else 
      { 
       //bad xml, show error message 
      } 
     } 
     else // we need to load xml differently in case of IE 
     { 
      var xml = new ActiveXObject("Microsoft.XMLDOM"); 
      xml.async = false; 
      try 
      { 
       xml.loadXML(retval); 
       err_code = xml.documentElement.getElementsByTagName('error_code')[0].text; 
       //check err_code and show error, or redirect to a different page ,or close window 
      } 
      catch (error) 
      { 
       //bad xml, show error message 
      } 
     } 
     } 
    }); 
} 
</scirpt> 

Php: 
<?php 
    $xml = new DOMDocument("1.0", "UTF-8"); 
    $xml_root = $xml->createElement("response");   
    $xml->appendChild($xml_root);  
    $xml_code = $xml->createElement("error_code"); 
    $xml_root->appendChild($xml_code); 
    // process request 
    // .... 
    $xml_val = $xml->createTextNode(utf8_encode(0)); // 
    $xml_code->appendChild($xml_val); 

    print($xml->saveXML()); 
?> 
+0

내가 모든되었습니다 때 세션 출력에 숨겨진 양식 변수를 플래그를 설정하려고 생각 성공한 다음 창을 닫습니다. – RyanP13