jQuery:停止提交表单,执行脚本,继续提交表单?

Tui*_*izi 20 javascript jquery jquery-selectors

我有一个表单,当我提交他时,我执行多个脚本.这是我的代码:

$("#RequestCreateForm").submit(function (e) {
    if ($("#RequestCreateForm").validate().checkForm() == false) { return; }

    e.preventDefault();

    //many scripts

    //How to continue submitting?
}
Run Code Online (Sandbox Code Playgroud)

之后是否可以继续提交表格(停止时e.preventDefault();)//many scripts

谢谢

Chr*_*ris 25

当你调用时$("#RequestCreateForm").submit(),脚本将再次运行事件处理程序,并导致无限循环(正如Koen在对已接受答案的评论中指出的那样).因此,您需要在提交之前删除事件处理程序:

$("#RequestCreateForm").on('submit', function (e) {
    e.preventDefault();
    // do some stuff, and if it's okay:
    $(this).off('submit').submit();
});
Run Code Online (Sandbox Code Playgroud)

最后一行需要在条件语句中,否则它将永远发生,并e.preventDefault();在顶部否定你.


Adr*_*eno 17


$("#RequestCreateForm").submit(function (e) {
    if ($("#RequestCreateForm").validate().checkForm() === false) { 
       e.preventDefault(); 
       //form was NOT ok - optionally add some error script in here

       return false; //for old browsers 
    } else{
       //form was OK - you can add some pre-send script in here
    }

    //$(this).submit(); 
    //you don't have to submit manually if you didn't prevent the default event before
}
Run Code Online (Sandbox Code Playgroud)

  • 这将创建一个无限循环,从而触发'RangeError:超出最大调用堆栈大小.' (12认同)

Bha*_*nan 6

$("#RequestCreateForm").submit(function (e) {
    if ($("#RequestCreateForm").validate().checkForm() == false) 
    { 
         e.preventDefault();
         return false; 
    }        

    //other scripts

}
Run Code Online (Sandbox Code Playgroud)