作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JQuery 通过 ajax 请求执行表单提交。我用的是
form.submit(function() {
if( success ) {
return true;
}
validate(); //proceeds to an ajax call
return false;
}
请求成功后,我想继续表单提交或用户回调。因此,如果用户回调未定义,我将在表单验证成功时提交表单(通过我的验证函数)。
config = {
successCallback: function() {
success = true;
form.submit(); //does not work
}
};
validate = function() {
$.ajax(
...
success: function(data) {
//code logic
config.successCallback();
}
);
};
ajax 成功回调将调用 config.successCallback(),如果用户从未覆盖它,它将继续正常的表单提交。我尝试使用实例变量(成功)来确保“返回 true”将继续进行默认表单提交。
不幸的是,这不起作用。似乎阻止默认表单提交的“return false”语句将忽略任何进一步的提交调用,即使设置了实例变量也是如此。它只有在再次单击提交按钮后才起作用(这使得它起作用两次)。
有没有解决这个问题的方法。我希望在提供时使用用户回调,但在不提供时继续使用默认表单提交,并且由于我使用 ajax 函数来验证表单,因此 ajax 成功回调使事情变得复杂。
最佳答案
确保 success
在范围内,或者在成功回调中使用 form[0].submit()
来提交 DOM 表单并绕过 jQuery 注册处理程序(假设集合中只有一种 DOM 表单)。
后一种方法实际上是 jQuery 验证插件建议解决 too much recursion 的潜在问题的方法。 .
关于JQuery如何在ajax调用成功后重新提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3018624/
我是一名优秀的程序员,十分优秀!