jQuery 验证添加规则

jQuery Validation Adding A Rule

我是 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 以查看正则表达式是否匹配。如果它没有正确匹配,那么它应该说 invalid vin。

当我 运行 挖矿时,它甚至不使用正则表达式,但我不明白为什么。对此的任何帮助将不胜感激!

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.');