2015-02-08 203 views
0

我很新的jQuery验证有人请纠正我在哪里我错了我想要添加的规则。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,看看正则表达式匹配。如果它不正确,那么它应该说无效的vin。

当我运行我的它甚至不使用regEx,但我不明白为什么。任何帮助,将不胜感激!

+0

检查您的控制台(chrome - f12 - console)您可能有一些错误。 – user1477388 2015-02-08 13:12:00

回答

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

如果您没有足够的代码运行,请不要使用代码段功能。谢谢。 – Sparky 2015-02-08 17:07:59

+0

实际上,'.addMethod()'方法需要第三个输入......第三个是可选的,它是自定义消息。 – Sparky 2015-02-08 18:02:04