【问题标题】:jQuery closing pop-up after successful form submit表单提交成功后jQuery关闭弹出窗口
【发布时间】:2010-03-08 16:25:07
【问题描述】:

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

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

目前我为此使用的 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');
    }      
});

});

【问题讨论】:

    标签: javascript jquery


    【解决方案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());
    ?>
    

    【讨论】:

    • 我想我们要在会话中设置一个标志,并在一切成功后输出一个隐藏的表单变量,然后关闭窗口。
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多