我正在使用表单的验证器插件。 我会使用方法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
}
});
你能做到吗?如何更改方法来执行此操作? 感谢
答案 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;