我在每个页面上都注入了这个jQuery函数,以便在单击它们后禁用提交按钮。
$('form').submit(function () {
var btn = $('input[type=submit]', this);
disableButtonOrLink.disableSubmit(btn);
btn = $('button[type=submit]', this);
disableButtonOrLink.disableSubmit(btn);
});
问题是我还有一些后端验证,有时会以这样的形式附加到表单
<form action="someAction" method="post" name="someForm" class="form"
onsubmit="var invalid=false;
invalid=someAction();
if(invalid){return false;}"
id="someForm">
我遇到的问题是在返回false之后始终调用('form')。submit动作。由于返回错误,表单实际上并未提交;但是这个jQuery函数仍然被调用。反正有没有阻止这个.submit被调用?
只是为了澄清究竟发生了什么: 正在调用表单上的onSubmit;
正在点击返回虚假部分并正确取消提交;
在onSubmit完成后仍然会调用('form')。submit,好像表单的提交没有被取消并且正在禁用按钮。
我想阻止最后一步发生。
答案 0 :(得分:0)
您可以使用JQuery在form
中找到这些按钮,并使用一种方法来阻止他们通常所做的事情。
例如:
$("form button").on('click', function(e){
e.preventDefault();
});
答案 1 :(得分:0)
我可能会尝试这样的事情
$('#someForm').on('submit', function(e) {
if ($(this).data('some-action')) {
e.preventDefault();
return false;
}
//... then disable buttons, etc
});
在这种情况下,您需要将属性data-some-action
添加到表单中,使用您正在执行的任何后端验证进行评估。
<强>更新强>
$('#someForm').on('submit', function(e) {
if ($(this).data('some-action') == 'error-message') {
e.preventDefault();
alert('error!');
return false;
}
if ($(this).data('some-action') == 'reload') {
e.preventDefault();
document.location.reload(true);
}
//... then disable buttons, etc
});