那里有一些类似的问题要挖掘,但我的问题不同,因为我没有在提交中使用 validate 函数(实际上根本没有),而且我也没有使用 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);
clicked true 是在点击事件上添加的属性:
$("form input[type=submit]").click(function () {
$("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
$(this).attr("clicked", "true");
});
正如您所猜到的,我必须按两次提交按钮才能提交表单,但我不明白为什么。第一次它完全没有做任何事情。调试器上没有警报命中或网络活动。事件.submit和.click根本不会触发。
具有这种结构的其他形式似乎没有这个问题。
有任何想法吗?
更新
发现了问题。在后台的同一页面中执行了另一个不相关的 ajax 调用,除非其他 ajax 调用完成,否则提交将不起作用。说得通!