Jquery验证两个数字的精确长度?

时间:2014-10-13 09:14:56

标签: jquery jquery-plugins jquery-validate

我正在使用表单的验证器插件。 我会使用方法exactlength但有2个数字。 我会检查该字段是11还是10个字符。

jQuery.validator.addMethod("exactlength", function(value, element, param) {
return this.optional(element) || value.length == param;
}, jQuery.format("Please enter exactly {0} characters."));

$("#formtovalidate").validate({
 rules: {
  somefield: {
    exactlength: 10,
    exactlength: 11
  }
});

你能做到吗?如何更改方法来执行此操作? 感谢

1 个答案:

答案 0 :(得分:4)

你不能两次传递相同的密钥,你需要做的是将它作为一个数组传递



jQuery.validator.addMethod("exactlength", function(value, element, param) {
  if (this.optional(element)) {
    return true;
  }
  if ($.isArray(param)) {
    return $.inArray(value.length, param) != -1;
  } else {
    return value.length == param;
  }
}, function(param, input) {
  return jQuery.validator.format("Please enter exactly " + ($.isArray(param) ? param.join() : param) + " characters.")
});

$("form").validate({
  debug: true,
  rules: {
    f1: {
      exactlength: [10, 11]
    },
    f2: {
      required: true,
      exactlength: 3
    }

  }
});

//
$('#save').click(function() {
  $('form').valid()
  return false;
})

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<form>
  <div>
    <input name="f1" />
  </div>
  <div>
    <input name="f2" />
  </div>
  <input id="save" type="button" value="save" />
</form>
&#13;
&#13;
&#13;