2010-10-07 182 views
8

我有一個表格驗證最小/最大長度的郵政編碼。我需要有拉鍊分鐘是5位數字爲所有國家除澳大利亞外這就需要將4 這裏是有麻煩什麼IM:自定義jQuery驗證.addMethod

$.validator.addMethod(
    "AusZip", 
    function(value, element) { 
     if ($("#Country").val("Aus") && ("#PostalCode").length < 4)) { 
     return false; 
    } else return true; 
}, 
"Australian Zip Code Must Be at least 4 Digits"); 

然後在規則

rules: { 
    PostalCode: { 
     required: true, 
     minlength: 5 //for all countries except AUS 
     AusZip: true // for Aus 
    } 
} 

是長度不是要走的路?

回答

8

我假設所有驗證規則必須通過,這意味着你的minlength如果你有4

的長度此外,你錯過了之前$("#PostalCode").length總是失敗。

另外這條線的值爲#Country

$("#Country").val("Aus") 

你想獲得值,比較"Aus"

$("#Country").val() === "Aus" 

嘗試刪除minlength,並更改您的自定義功能。

試試這個:

編輯:改變,使你有2個驗證器。

一個驗證縣是澳大利亞值的長度至少爲4

另一驗證縣澳大利亞和值的長度爲至少5。

$.validator.addMethod("AusZip", function(value, element) { 
    var isAus = $("#Country").val() === "Aus"; 

    if (isAus && value.length < 4) { 
     return false; 
    } else return true; 

}, "Australian Zip Code Must Be at least 4 Digits"); 

$.validator.addMethod("NonAusZip", function(value, element) { 
    var isNotAus = $("#Country").val() !== "Aus"; 

    if (isNotAus && value.length < 5) { 
     return false; 
    } else return true; 

}, "Zip Code Must Be at least 5 Digits"); 


$('form').validate({ 
    rules: { 
     PostalCode: { 
      required: true, 
      AusZip: true, 
      NonAusZip: true 
     } 
    } 
});​ 

或者,如果你並不需要基於該國自定義驗證消息,你可以這樣做:

$.validator.addMethod("GlobalZip", function(value, element) { 
    var isAus = $("#Country").val() === "Aus"; 

    if ((isAus && value.length < 4) || value.length < 5) { 
     return false; 
    } else return true; 

}, "Zip Code is not long enough"); 

$('form').validate({ 
    rules: { 
     PostalCode: { 
      required: true, 
      GlobalZip: true 
     } 
    } 
});​ 
+0

因此,如果我從PostalCode規則中刪除「minlength」,對於其他所有其他規則,它仍然需要5的最小長度? – 2010-10-07 14:39:28

+0

這將返回一個錯誤「errorFirstWord」由於某種原因未在控制檯中定義。 – 2010-10-07 14:44:52

+0

它應該。試一試。此行檢查*是否爲澳大利亞且小於四,或小於五*。 '(isAus && $ pCode.length <4)|| $ pCode.length <5' – user113716 2010-10-07 14:45:58