jquery-steps:在提交表单时禁用提交按钮

我正在使用jquery-steps.js,

我想在单击提交时禁用提交按钮,并且在提交表单之前永远不要激活它。

原因是如果有人点击提交很多次我收到很多邮件!

注意:我的HTML文件不包含提交按钮,它只显示我包含的js文件

我的js文件看起来像这样。

$(function() { $("#smart-form").steps( { bodyTag:"fieldset", headerTag:"h2", bodyTag:"fieldset", transitionEffect:"slideLeft", titleTemplate:"#index# #title#", labels: { finish: "Send søknad", next: "Neste", previous: "Tilbake", loading: "Laster..." } , onStepChanging:function(event, currentIndex, newIndex) { if(currentIndex>newIndex) { return true; } var form=$(this); if(currentIndex<newIndex) {} return form.valid(); } , onStepChanged:function(event, currentIndex, priorIndex) {} , onFinishing:function(event, currentIndex) { var form=$(this); form.validate().settings.ignore=":disabled"; return form.valid(); } , onFinished:function(event, currentIndex) { var form=$(this); $(form).ajaxSubmit( { target:'.result', beforeSubmit:function() {} , error:function() {} , success:function() { $('.alert-success').show().delay(7000).fadeOut(); $('.field').removeClass("state-error, state-success"); if($('.alert-error').length==0) { $('#smart-form').resetForm(); reloadCaptcha(); } } } ); } } 

这可能有点通用(我还没有测试过),但这可以让你开始

 $(document).find('input[type="submit"').prop('disabled', 'disabled'); 

第一行后$(function() { ,添加:

 var isFinishing = false; 

onFinished事件中更改此行:

 var form=$(this); 

用于:

 if (isFinishing) return; isFinishing = true; var form=$(this); 

如果AJAX调用的success事件没有重新加载页面,则应考虑在此函数中添加此行:

 isFinishing = false;