我有一个ASP.NET应用程序,我已经实现了以下代码来禁止用户双击和提交按钮,因此代码背后的方法不会执行一次。
OnClientClick="this.disabled = true; this.value = 'Submitting...';" UseSubmitBehavior="false" onclick="BtnSubmit_Click"
这很完美,但在其中一个页面上我实现了javascript表单验证,下面的代码无效:
OnClientClick="return validation(); this.disabled = true;" UseSubmitBehavior="false" onclick="BtnAdd_Click"
验证是确保用户不留任何空字段,但是如果验证成功,则单击按钮时,按钮被禁用但未调用onclick
方法。
为什么会发生这种情况?
答案 0 :(得分:0)
Rikket,你必须编写单独的代码以防止双重提交表单,一旦提交,Jquery函数可能会有所帮助,如下所示,在你的JavaScript验证函数之后放置:
jQuery.fn.preventDoubleSubmission = function () {
var $form = $(this);
$form.on('submit', function (e) {
if ($form.data('submitted') === true) {
e.preventDefault();
} else {
$form.data('submitted', true);
}
}).find('input').on('change', function () {
$form.data('submitted', false);
});
return this;
};
可以在else中验证后调用:
if (nullFieldTracked == 'true') {
alert(nullExceptionMsg);
return false;
}
else {
$('form').preventDoubleSubmission();
}