我有一个使用jqueryvalidation的表单,并且正在验证提交。当发生这种情况时,它会禁用该按钮并将其更改为"正在提交.."然后提交表格。
问题是,该按钮似乎已被禁用,但如果您继续单击该按钮,它将多次提交,从而导致X数据量进入数据库。
这是处理提交的代码:
submitHandler: function(form) {
$('#SaveTraining').val('Submitting...');
$('SaveTraining', this).attr('disabled', 'disabled');
form.submit();
// return false;
}
这是按钮:
<input type="submit" id="SaveTraining" name="SaveTraining" class="btn btn-success" <cfif rc.candidateActive EQ 2>disabled</cfif> value="Save Training">
如果候选人处于活动状态,该按钮内置一点CF以显示或不显示。
是否有其他推荐方法使此按钮只能单击一次?
答案 0 :(得分:1)
您的代码中有拼写错误,我也不相信, this
:
submitHandler: function(form) {
$('#SaveTraining').val('Submitting...');
$('#SaveTraining').attr('disabled', 'disabled');
form.submit();
// return false;
}
但是当您使用表单提交时,还有其他方法可以调用该提交处理程序(如在表单上按Enter键),您也可以阻止它。你可以使用如下的全局变量来做到这一点。
submitted = false;
.....
submitHandler: function(form) {
$('#SaveTraining').val('Submitting...');
$('#SaveTraining', this).attr('disabled', 'disabled');
(!submitted) {
// I will submit only this time...
submitted = true;
form.submit();
return true;
}
return false;
}