jQuery验证添加规则

时间:2015-02-08 13:06:42

标签: javascript jquery jquery-validate

我对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,但我无法弄清楚原因。任何有关这方面的帮助将不胜感激!

1 个答案:

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