[英]Prevent form data from submitting after http request
以下代码阻止提交表单数据
$('#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();
您必须立即调用preventDefault()
才能停止提交表单。 无法避免这种情况,因为AJAX调用是异步的,您需要等待它。
但是,您可以在AJAX调用完成后在form元素本身上调用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...
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.