2

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

<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>

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

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

4

4 回答 4

1

只需添加:

$(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); 
      }
    }
  });
});

或在以下submit事件中<form>

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

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

于 2015-12-29T09:31:17.613 回答
1

使用以下submitHandler属性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);
         }
    },
    //..
  });
});
于 2015-12-29T09:35:19.763 回答
1

HTML:

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

查询:

$("#registrationfrm").on("submit",function(){
$("#submitbtn").prop('disabled', true);
});
于 2015-12-29T15:09:34.647 回答
0

你可以试试这样-

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

jQuery 验证后如何禁用/启用提交按钮?

于 2015-12-29T09:33:10.987 回答