表单在preventDefault之后提交

我正在尝试在提交之前validation表单。 我尝试了几种方法,但是我无法在preventDefault之后提交表单。 这是我目前的代码:

$('#formquote').submit(function(e){ e.preventDefault(); console.log('here'); validating = true; var tval = valText('input[name=contactname]'); var pval = valPhone('input[name=telephone]'); var eval = valEmail('input[name=email]'); console.log(tval); console.log(pval); console.log(eval); if(tval && pval && eval){ $("#formquote").unbind('submit'); $("#formquote").submit(); } }); 

控制台记录您可以按预期看到输出(分别为’here’,true,true,true)当表单第二次按下按钮时提交。 我也试过以下建议无济于事:

 -> $("#formquote").unbind('submit').submit(); //same result -> $("#formquote").submit(); //by itself, infinite loop -> $("#formquote")[0].submit(); //non function error -> $('#formquote').unbind('submit', preventDefault); //'preventDefault' not defined 

任何帮助,将不胜感激

而不是总是阻止表单提交,进行validation并在通过时再次提交,为什么不在validation失败时阻止提交? 像这样的东西:

 $('#formquote').submit(function (e) { validating = true; var tval = valText('input[name=contactname]'); var pval = valPhone('input[name=telephone]'); var eval = valEmail('input[name=email]'); if (!(tval && pval && eval)) { e.preventDefault(); } }); 

我想接受的答案是最好的方法,但如果出于某种原因,你需要首先使用preventDefault()然后提交表单,这对我有用:

 $('#formquote').on('submit', function (e) { e.preventDefault(); // Do validation stuff.. // Then submit the form $(this).submit(); }