禁用“提交”按钮但仍然会提交双重提交

时间:2016-04-22 19:09:33

标签: jquery jquery-validate

我有一个使用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以显示或不显示。

是否有其他推荐方法使此按钮只能单击一次?

1 个答案:

答案 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;
}