2015-02-08 177 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