jQuery Validate插件 - 禁用某些字段的错误消息

时间:2017-02-17 16:50:49

标签: javascript jquery

我希望仅针对表单上的特定输入字段禁用错误消息。

在这个例子中,我试图仅为无线电输入字段禁用信息。

jQuery(document).ready(function($) {
  "use strict";

  $("form").validate();

  $('input[type="radio"]').validate({
    errorPlacement: function(error, element) {
      return false;
    }
  });
  
  $(document.body).on('click', '.submiter', function () {
		$("input").valid();
	});

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js"></script>


<form>
  <fieldset>
    <p>
      <label for="title-Mr">Mr</label>
      <input id="title-Mr" type="radio" name="title" value="MR" class="required">
    </p>
    <p>
      <label for="bading">Bading</label>
      <input id="bading" type="text" name="bading" class="required">
    </p>
  </fieldset>
  <p>
    <a class="submiter" href="#submit">submit</a>
  </p>


</form>

4 个答案:

答案 0 :(得分:1)

我通过在errorPlacement函数中添加if语句来解决这个问题。

jQuery(document).ready(function($) {
  "use strict";

  $("form").validate({
    errorPlacement: function(error, element) {
      if (element.is(":radio")) {
        return false;
      } else {
        error.insertAfter(element);
      }
    }

  });


  $(document.body).on('click', '.submiter', function() {
    $("input").valid();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js"></script>


<form>
  <fieldset>
    <p>
      <label for="title-Mr">Mr</label>
      <input id="title-Mr" type="radio" name="title" value="MR" class="required">
    </p>
    <p>
      <label for="bading">Bading</label>
      <input id="bading" type="text" name="bading" class="required">
    </p>
  </fieldset>
  <p>
    <a class="submiter" href="#submit">submit</a>
  </p>


</form>

答案 1 :(得分:0)

查看https://jqueryvalidation.org/validate处的文档。只需要一个类别来识别您不想验证的字段并使用“忽略”&#39; form.validate调用中的选项:

&#13;
&#13;
jQuery(document).ready(function($) {
  "use strict";

  $("form").validate({ignore: ".ignore"});

 
  $(document.body).on('click', '.submiter', function () {
		$("input").valid();
	});

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js"></script>


<form>
  <fieldset>
    <p>
      <label for="title-Mr">Mr</label>
      <input id="title-Mr" type="radio" name="title" value="MR" class="required ignore">
    </p>
    <p>
      <label for="bading">Bading</label>
      <input id="bading" type="text" name="bading" class="required">
    </p>
  </fieldset>
  <p>
    <a class="submiter" href="#submit">submit</a>
  </p>


</form>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这是一个解决方案

<script>
    jQuery(document).ready(function($) {
  "use strict";

  $('form').validate({
    errorPlacement: function(error, element) {
      if(element.attr('id') == 'title-Mr'){
        return false;
      }
    }
  });

  $(document.body).on('click', '.submiter', function () {
        $("input").valid();
    });

});
</script>

答案 3 :(得分:0)

此方案中的最佳选择是:

  1. 如果不需要单选按钮,请从无线电输入中删除class="required"属性。
  2. 通过在ignore: <selector>函数中指定$().validate(),完全忽略对该元素的验证。

    $('input[type="radio"]').validate({
        ignore: "title-Mr"
    });
    
  3. 如果您仍然需要单选按钮,但不显示消息,请为该特定标识符指定空消息。

    $('input[type="radio"]').validate({
        messages: {
            "title-Mr": null
        }
    });
    
  4. 根据https://jqueryvalidation.org/,首页上的视频介绍了几种不同的场景,每种场景都变得越来越复杂。演示如何指定基本自定义的方案说明有两个主要部分要传递给$().validate()函数:“rules”和“messages”。在“消息”内部,子键是您要自定义的表单字段消息的ID。还有其他选项,例如“忽略”。

    希望这有帮助。