我对jQuery验证非常新。有人请在我试图添加的规则出错的地方纠正我。
<script>
$("#form").validate({
focusInvalid: false,
rules: {
ownership: {
required: true
},
vin: {
required: true,
validateVin: true
},
// Same for other fields
},
messages: {
ownership: "This field is required.",
vin: "Invalid VIN",
// Repeat for other fields
}
});
// create your custom rule
jQuery.validator.addMethod(validateVin(this.value, Number($("#vehicleyear").val()))) {
function validateVin(vin, date) {
var re;
if (date >= 1981) {
re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$");
} else if (date < 1981) {
re = new RegExp("^[A-Z\\d]{2,17}$");
} else {
}
return vin.match(re);
}, 'Please enter valid VIN.'});
</script>
这应该检查两个字段,首先检查选择的年份vehicleyear
然后根据它检查输入vin
的年份来查看regEx是否匹配。如果它不正确那么它应该说无效的vin。
当我运行时,它甚至不使用regEx,但我无法弄清楚原因。任何有关这方面的帮助将不胜感激!
答案 0 :(得分:1)
addMethod函数有两个输入,第一个是要添加的规则的名称。第二个是函数本身,不需要命名。 以下代码应该是您希望的。 唯一需要注意的是如何设置日期变量。 有关更多示例,请参阅此页面。 jQuery Validator addMethod()
jQuery.validator.addMethod("validateVin", function(vin) {
var date = Number($("#vehicleyear").val());
var re;
if (date >= 1981) {
re = new RegExp("^[A-HJ-NPR-Z\\d]{8}[\\dX][A-HJ-NPR-Z\\d]{2}\\d{6}$");
} else if (date < 1981) {
re = new RegExp("^[A-Z\\d]{2,17}$");
} else {}
return vin.match(re);
}, 'Please enter valid VIN.');