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;