使用jQuery在提交时阻止表单重定向,直到函数完成
有没有一种方法可以使用jQuery强制表单在提交之前等待函数执行完毕 我在多字段表单上有一个提交按钮。我希望“提交”按钮点击服务器以确定当前用户在数据库中是否有任何项,如果没有,我希望它弹出一个确认窗口以确保用户知道。如果他们已经有一些项目,我想它跳过弹出窗口,并提交正常 我用的是这样的东西:使用jQuery在提交时阻止表单重定向,直到函数完成,jquery,forms,submit,blocking,Jquery,Forms,Submit,Blocking,有没有一种方法可以使用jQuery强制表单在提交之前等待函数执行完毕 我在多字段表单上有一个提交按钮。我希望“提交”按钮点击服务器以确定当前用户在数据库中是否有任何项,如果没有,我希望它弹出一个确认窗口以确保用户知道。如果他们已经有一些项目,我想它跳过弹出窗口,并提交正常 我用的是这样的东西: $('#done').click(function(event) { $.post(asyncController + "/checkItems", function(response)
$('#done').click(function(event)
{
$.post(asyncController + "/checkItems", function(response)
{
if(response != "true")
{
var test = confirm('Are you sure?');
if(test)
{
//submit
} else
{
event.preventDefaultAction();
}
}
}
);
});
不幸的是,表单并没有等待javascript完成执行,我在加载下一页的中途得到了弹出窗口。总之,它阻止了submit按钮的click事件的默认提交操作,然后我们获取对表单元素的引用,如果ajax调用和确认的结果为true,我们将提交此表单
$('#done').click(function(event) {
//prevent submit
event.preventDefault();
//get form reference
var frm = this.form;
$.post(asyncController + "/checkItems", function(response) {
if (response != "true") {
var test = confirm('Are you sure?');
if (test) {
//submit the form
frm.submit();
}
}
});
});
+这是一个人通常做的事。不,不能同步运行异步函数,反之亦然。这需要像线程或协同程序这样的语言特性,而JavaScript没有。谢谢,它(大部分)是有效的。代码没有问题,只是在提交时添加了一个隐藏字段来检查php端,因为表单上有多个提交按钮,可以执行不同的操作。