我有一个表单,当我提交他时,我执行多个脚本。这是我的代码:
$("#RequestCreateForm").submit(function (e) {
if ($("#RequestCreateForm").validate().checkForm() == false) { return; }
e.preventDefault();
//many scripts
//How to continue submitting?
}
是否可以在e.preventDefault();
之后继续提交表单(已//many scripts
停止)?
谢谢
答案 0 :(得分:24)
当你调用$("#RequestCreateForm").submit()
时,脚本将再次运行事件处理程序,并导致无限循环(正如Koen在对已接受答案的评论中指出的那样)。因此,您需要在提交之前删除事件处理程序:
$("#RequestCreateForm").on('submit', function (e) {
e.preventDefault();
// do some stuff, and if it's okay:
$(this).off('submit').submit();
});
最后一行需要在条件语句中,否则它将永远发生,并在顶部否定你的e.preventDefault();
。
答案 1 :(得分: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
}
答案 2 :(得分:6)
$("#RequestCreateForm").submit(function (e) {
if ($("#RequestCreateForm").validate().checkForm() == false)
{
e.preventDefault();
return false;
}
//other scripts
}
答案 3 :(得分:1)
$("#RequestCreateForm").submit(function (e) {
if ($("#RequestCreateForm").validate().checkForm() == false) { return; }
e.preventDefault();
//many scripts
// Bypass the jquery form object submit and use the more basic vanilla
// javascript form object submit
$("#RequestCreateForm")[0].submit();
}
答案 4 :(得分:0)
为避免提交循环,应使用其他变量。
var codeExecuted = false;
$('#RequestCreateForm').submit(function(e) {
...
if(!codeExecuted){
e.preventDefault();
...
functionExecuted = true;
$(this).trigger('submit');
}
});
答案 5 :(得分:0)
此处的所有解决方案都过于复杂或导致javascript错误,最简单且 最清晰 解决方案我想:
jQuery("#formid").submit(function(e) {
if( ! (/*check form*/) ){ //notice the "!"
e.preventDefault();
//a bit of your code
} //else do nothing, form will submit
});
答案 6 :(得分:0)
这是我避免无限循环的方法。
<input type="button" id="submit" value="submit"/>
)来模仿提交按钮; $('#submit').click(function() { if(//validation rules is ok) { $("#RequestCreateForm").submit(); //assuming the form id is #RequestCreateForm } else { return false; } });
答案 7 :(得分:-1)
返回;与e.preventDefault();
相同尝试
$("#RequestCreateForm").trigger('submit');