表单提交时禁用提交按钮

Disable submit button when form submit

我正在使用这个验证码,我想在验证后提交表单时禁用提交按钮。 提交按钮:

<input type="submit" class="submitStandard" value="Save Info" >

验证码:

<script type='text/javascript'>//<![CDATA[
                $(".submitStandard").on('click', function() {
                    $('form').validate({
                        ignore: [],
                        rules: {
                            required: {
                                required: true
                            },
                            shopname: {
                                required: true
                            }
                        },
                        highlight: function(element) {
                            $(element).closest('.form-group').addClass('has-error');
                        },
                        unhighlight: function(element) {
                            $(element).closest('.form-group').removeClass('has-error');
                        },
                        errorElement: 'span',
                        errorClass: 'help-block',
                        errorPlacement: function(error, element) {
                            if(element.parent('.input-group').length) {
                                error.insertAfter(element.parent());
                            } else {
                                error.insertAfter(element); 
                            }
                        }
                    });
                });//]]>
            </script>

任何可能的最佳解决方案,提交应在没有任何验证错误时禁用。

问题:当我保存信息时,如果我点击提交按钮两次或三次,它保存值两次或三次,应该是点击一次,然后应该是禁用。

只需添加:

$(this).prop("disabled", true);

完整代码:

$(".submitStandard").on('click', function() {
  $(this).prop("disabled", true);
  $('form').validate({
    ignore: [],
    rules: {
      required: {
        required: true
      },
      shopname: {
        required: true
      }
    },
    highlight: function(element) {
      $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
      $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function(error, element) {
      if(element.parent('.input-group').length) {
        error.insertAfter(element.parent());
      } else {
        error.insertAfter(element); 
      }
    }
  });
});

或在 <form>submit 事件上:

$('form').submit(function(){
    $(this).find(".submitStandard").prop('disabled', true);
});

注意:我可以看到您使用的是通用 $("form")。不推荐这样做,因为当 JavaScript 加载时,它会盲目地应用所有 <form> 元素。所以最好给个id.

你可以试试-

$('form#id').submit(function(){
    $(this).find('input[type=submit]').prop('disabled', true);
});

利用 submitHandler 属性 of validate 如下:

$(".submitStandard").on('click', function() {
  var button=$(this);
  $('form').validate({
    ignore: [],
    rules: {
      required: {
        required: true
      },
      shopname: {
        required: true
      }
    },
    //.. Other properties
    //..
    submitHandler: function(form) {
         if(form.valid()) //check if form is valid?
         {
             button.prop("disabled", true);
         }
    },
    //..
  });
});

HTML:

<form id="registrationfrm" method="post">
<input type="submit" id="submitbtn" name="submit" value='SAVE' /> 
</form>

Jquery:

$("#registrationfrm").on("submit",function(){
$("#submitbtn").prop('disabled', true);
});