有一些类似的问题可以解决,但我的不同,因为我没有在提交中使用验证功能(实际上根本没有),而且我也没有使用ajax。
我有一个表单,提交看起来像这样:
(function ($, settings, undefined) {
var hasSubmitted = false;
$(function () {
$("form").submit(function () {
var theForm = $(this);
var cancelClicked = $("input[type=submit][clicked=true].cancel").length > 0;
if (cancelClicked || (theForm.valid() && !myOtherRequirements())) {
hasSubmitted = true;
return true;
} else {
return false;
}
});
}
})(jQuery, settings);
单击的true是在点击事件中添加的属性:
$("form input[type=submit]").click(function () {
$("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
$(this).attr("clicked", "true");
});
正如您所猜测的那样,我必须按两次提交按钮才能提交表单但我无法理解原因。它第一次绝对没有。调试器上没有警报命中或网络活动。事件 .submit 和 .click 根本不会被触发。
具有这种结构的其他形式似乎没有这个问题。
有什么想法吗?
更新
发现问题。在后台的同一页面中执行了另一个不相关的ajax调用,除非其他ajax调用完成,否则提交将无效。说得通!