2010-11-10 70 views
1

予讀入這個jquery的網站:jQuery驗證插件addMethod與本地化

消息(可選)字符串,功能
以顯示 此方法的默認消息。可以通過jQuery.validator.format(value)創建一個函數 。 未定義時,使用已存在的 消息(便於本地化),否則 字段特定的消息必須定義爲 。

我添加了一個方法是這樣的:

$.validator.addMethod("postalCode", function(value, element) { 
return this.optional(element) || /^[0-9\-]+$/i.test(value); 
}); 

然後,在我的本地化文件我有:

postalCode: jQuery.validator.format("blabla") 

然而, 「布拉布拉」 從未設想。

我也試圖通過jQuery.format()作爲消息參數:

$.validator.addMethod("postalCode", function(value, element) { 
return this.optional(element) || /^[0-9\-]+$/i.test(value); 
}, jQuery.format()); 

沒有任何運氣。

這是假設如何工作?

非常感謝, MEM

回答

1

事情是這樣的:

$.validator.addMethod("postalCode", function(value, element) { 
return this.optional(element) || /^[0-9\-]+$/i.test(value); 

應該工作。如果您忽略該消息,它將從您的本地化消息文件中獲取該消息。

這裏有很好的課。 :)

+0

我搜索了更復雜的方式,你有soluce ......這麼簡單。謝謝。 – Hugo 2012-02-22 15:37:46

0

在方法$ .validator.addMethod()最後一個可選參數是一個默認的常量消息作爲文本在quots。你必須使用jQuery.validator.format( 「... {0} ... {1} ...」)在代替的情況下定義的處理程序的參數爲:

addMethod("methodName", function(value, element, params){ 

可以在錯誤被outputed消息,替換掩碼「{N}」(這是爲什麼函數「格式」需要),其中N是參數的數量,如果有幾個參數傳遞的話。 對於i.g.規則「minlength:10」意味着「10」是句柄func中第三個變量的值。

如果不指定默認消息,那麼就可以在一節中定義「消息」:

,messages : { 
    someField1 : {methodName:"error message"}, 
    someField2 : {methodName:$.validator.messages.custom_mess} 
} 

期望的是包括按以下順序js代碼:

  1. 「驗證」插件
  2. 「addMethod」 指令
  3. 「本地化」 文件
  4. 您的onLoad合作de與$('#someForm')。validate({...})
0

如果您想要「customPassword」驗證。

  1. 使.js文件的語言環境代碼結束(messages_en.js,messages_de.js)。
  2. 包含文件取決於所選的應用程序語言。
  3. 添加翻譯消息是這樣的:

$.extend($.validator.messages, { 
 
\t customPassword: "One number, small and big letter and min 8 chars.", 
 
\t required: "This field is required.", 
 
\t remote: "Please fix this field." 
 
});

  • 然後添加方法絲毫第二參數 「$ .validator.messages.customPassword」,而不是字符串消息。
  • jQuery.validator.addMethod("customPassword", function(value, element, params){ 
     
        return this.optional(element) || (value.match(/((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,50})/)); 
     
    }, $.validator.messages.customPassword);