Javascript 使用jQuery截取表单提交
我想通过jQuery截获提交,并首先检查服务器上是否存在文件。如果存在,则继续请求;如果不存在,则显示消息,不发送请求。这就是我所拥有的:Javascript 使用jQuery截取表单提交,javascript,jquery,Javascript,Jquery,我想通过jQuery截获提交,并首先检查服务器上是否存在文件。如果存在,则继续请求;如果不存在,则显示消息,不发送请求。这就是我所拥有的: $("#methodForm").submit(function(e){ checkIndex('upload/segments.gen').done(function() { return true; }).fail(function () { e.preventDefault(); ale
$("#methodForm").submit(function(e){
checkIndex('upload/segments.gen').done(function() {
return true;
}).fail(function () {
e.preventDefault();
alert("No index present!");
return false;
});
});
这是检查索引()
:
发生的情况是:文件存在于服务器上,但是checkIndex
返回失败。首先我看到警报弹出窗口,然后它继续向服务器发送post请求
我将
checkIndex()
用于其他目的,也可以在预期的情况下使用,因此我很确定错误在提交例程中的某个地方。但是我找不出它有什么问题。它实际上不是这样工作的,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!");
});
});
您不能从回调返回到异步方法(如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!");
});
});
不幸的是,这只适用于同步AJAX请求。您应该禁用按钮并在
done
callback@KevinB-是的,它会改变它!这对我不起作用。我得到“TypeError:form.submit不是函数”,如果我使用$(form).submit()它会反复调用submit处理程序。如果有一个元素具有id=“submit”
,请将其更改为其他元素。我还遇到了一个类似的问题:显示要覆盖的图像的对话框。点击“确认”按钮(
元素)将提交表单。我必须确保在处理单击事件时添加e.preventDefault()
,否则我的请求将被阻止。
$("#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!");
});
});