以下代码阻止提交表单数据
$('#dataForm').submit(function (e) {
e.preventDefault();
});
我的问题是如何实现这一点,以防有一个需要时间来获得响应的ajax调用。 所以表单不会等到请求得到响应
$('#dataForm').submit(function (e) {
ajaxCallAsPromise().then(function (data){
if (data == true)
{
e.preventDefault(); //this will not work
}
});
//any codes here works normally ..
});
我的目的是等到获得请求响应然后使用 -
e.preventDefault();
答案 0 :(得分:2)
您必须立即致电preventDefault()
以停止提交表单。没有办法避免这种情况,因为AJAX调用是异步的,你需要等待它。
但是,在AJAX调用完成后,您可以在表单元素上调用submit()
,以便破坏jQuery事件处理程序并允许将表单发送到服务器,如下所示:
$('#dataForm').submit(function(e) {
e.preventDefault(); // stop the submission
var form = this;
ajaxCallAsPromise().then(function(data) {
if (!data) { // if data is verified, submit the form again
form.submit();
} else {
// presumably you want to tell the user the data is invalid here...
}
});
});