使用jQuery拦截表单提交
intercept form submit with jQuery
我想通过jQuery拦截提交,并首先检查服务器上是否存在文件。如果它存在,则继续请求,如果不存在,则显示消息并不发送请求。这就是我所拥有的:
$("#methodForm").submit(function(e){
checkIndex('upload/segments.gen').done(function() {
return true;
}).fail(function () {
e.preventDefault();
alert("No index present!");
return false;
});
});
这是checkIndex()
:
function checkIndex(file){
return $.ajax({
url : file,
type:'HEAD'
});
}
结果是:文件存在于服务器上,但checkIndex
返回fail。首先我看到警报弹出,然后它继续向服务器发送发布请求。
我也将checkIndex()
用于其他目的,因为它的工作方式与预期的一样,所以我很确定错误在提交例程中。但是我找不出它出了什么问题。
您不能从回调返回到异步方法(如ajax)。相反,请阻止所有提交,然后在准备好后提交。
$("#methodForm").submit(function(e){
e.preventDefault();
var form = this;
checkIndex('upload/segments.gen').done(function() {
form.submit(); // submit bypassing the jQuery bound event
}).fail(function () {
alert("No index present!");
});
});
它并不是这样工作的,checkIndex是异步的,所以当它返回任何东西时,表单已经提交,返回语句也在不同的范围内,请尝试类似的方法:
$("#methodForm").submit(function(e){
e.preventDefault(); //prevent submit
var self = this;
checkIndex('upload/segments.gen').done(function() {
self.submit(); //submit if ajax OK
}).fail(function () {
alert("No index present!");
});
});
相关文章:
- AngularJS JQuery Ajax表单提交等效
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- jquery表单提交无法使用多个输入(IE和Firefox)
- Jquery表单提交仍在刷新
- 如何在没有表单提交、没有js、没有jquery和没有ajax的情况下将输入的文本框值存储到php变量中
- 如何触发我的 jquery 表单提交
- 表单提交在一段时间循环PHP,jquery
- 在提交之前验证表单,jQuery发布到javaScript,然后提交到确认页面
- 'Alajax' Jquery 简单表单提交.如果表单未经验证,如何防止提交
- 使用jquery进度条重定向到表单提交后的另一个页面
- 表单提交onChange事件;不能使用JQuery函数
- jQuery在表单提交和重定向后发出警报
- Jquery:如何处理"停止/取消”;用户停止表单提交时的事件
- 我想知道如何只激活表单提交,而不获取jquery中ajax url的值
- Jquery、AJAX&PHP,表单提交不起作用
- 在初始表单提交后使用ajax/jQuery自动刷新,然后更改页面标题
- 如果电子邮件输入处于焦点上,则阻止输入按钮表单提交 (jquery)
- 防止hubspot表单提交- jQuery验证
- 如何防止表单提交 JQuery