jQuery 验证错误类未从字段中删除

标签 jquery jquery-validate

我有一个用于 jQuery 验证的自定义方法(基于相关问题的 Sparky's answer),该方法检查以确保一组四个文本字段中的一个具有值。这工作正常,除了我刚刚注意到,即使在其中一个字段中输入值时错误消息消失,错误类仍然保留在原处,因此文本字段以错误颜色突出显示(本例中为红色背景) )。

关于如何解决这个问题有什么想法吗?

谢谢。

这是一个jsfiddle的问题。

这是我的脚本:

$(document).ready(function () {

  $.validator.addMethod("textboxrule", function (value, element) {
      return ($('#my_text_field_1').val() != '' || $('#my_text_field_2').val() != '' || $('#my_text_field_3').val() != '' || $('#my_text_field_4').val() != '')
  }, "Select at least one of these four");

  $('.my_form').validate({ // initialize the plugin
      errorLabelContainer: ".form_errors",
      wrapper: "li",
      groups: {
          somename: "my_text_field_1 my_text_field_2 my_text_field_3 my_text_field_4"
      },
      rules: {
          'my_text_field_1': {
              textboxrule: true
          },
          'my_text_field_2': {
              textboxrule: true
          },
          'my_text_field_3': {
              textboxrule: true
          },
          'my_text_field_4': {
              textboxrule: true
          }
      },
      submitHandler: function (form) { // for demo
          alert('valid form submitted'); // for demo
          return false; // for demo
      }
  });

});

这是我的 HTML:

<form class="my_form" method="post" action="#">
    <div>
        <ul class="form_errors"></ul>
    </div>
    <p>
<label>My text field 1</label>
<input id="my_text_field_1" name="my_text_field_1"  type="text" value="" /></p>

<p>
  <label>My text field 2</label>
  <input id="my_text_field_2" name="my_text_field_2"  type="text" value="" />
</p>

<p>
  <label>My text field 3</label>
  <input id="my_text_field_3" name="my_text_field_3"  type="text" value="" /></p>

<p>
  <label>My text field 3</label>
  <input id="my_text_field_4" name="my_text_field_4"  type="text" value="" /></p>

    <input type="submit" value="Submit" />
</form>

这是我的 CSS:

input.error { 
    background: red; 
}

最佳答案

如果错误类通过验证,您将需要扩展验证方法以删除错误类。试试这个:

$.validator.addMethod("textboxrule", function (value, element) {
    var returnValue = ($('#my_text_field_1').val() != '' || $('#my_text_field_2').val() != '' || $('#my_text_field_3').val() != '' || $('#my_text_field_4').val() != '');

    if (returnValue) {
        $("#my_text_field_1, #my_text_field_2, #my_text_field_3, #my_text_field_4").removeClass("error");
    }

    return returnValue;
}, "Select at least one of these four");

fiddle :http://jsfiddle.net/u4WM4/3/

关于jQuery 验证错误类未从字段中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245659/

相关文章:

javascript - 使用 SSN 正则表达式、屏蔽输入和依赖的 Jquery 验证

jquery - 如何获取元素的第n个子元素

javascript - 尝试动态使用 jOrgChart

javascript - Jquery文件验证器: How to call a function on success?

javascript - 在 Javascript 中从外部源导入 JSON feed

jquery - 动态创建表行后应用 Bootstrap "table-striped"

jquery - 使用 JQuery Validate Plugin 验证具有相同名称的多个表单字段

jQuery 验证忽略带有样式的元素

javascript - 添加/删除规则后如何使用 jQuery 重新验证表单?

javascript - 'generated' 属性在哪里是允许的?