2010-03-08 137 views
0

我有一个弹出窗体,我希望关闭表单的成功提交。目前,我们只在服务器端进行验证,它将使用类.error_message创建一个无序的验证错误列表。jQuery在成功提交表单后关闭弹出框

表单成功提交后,我想关闭窗口。

目前我正在使用的jQuery如下所示,但不起作用,因为第一次提交表单时错误消息的数量将始终为零。

$(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 2010-03-09 08:54:31