Jquery Validation Plugin addMethod with Localization

时间:2010-11-10 16:43:31

标签: jquery validation

我把它读到了jquery网站:

  

message(可选)字符串,功能
  要显示的默认消息   这种方法。可以是创建的功能   通过jQuery.validator.format(value)。   未定义时,已存在   消息被使用(方便的   本地化),否则   特定于字段的消息必须是   定义

我添加了这样的方法:

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

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

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

然而,“blabla”从未被假设过。

我也尝试将jQuery.format()作为消息参数传递:

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

也没有运气。

这假设如何工作?

非常感谢, MEM

3 个答案:

答案 0 :(得分:1)

这样的事情:

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

应该有效。如果省略该消息,它将从您的本地化消息文件中获取该消息。

这里很棒。 :)

答案 1 :(得分:0)

在$ .validator.addMethod()方法中,最后一个可选参数是默认常量消息,作为quots中的文本。您必须使用jQuery.validator.format(“... {0} ... {1} ...”),以防定义的处理程序具有参数:

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

可以在错误消息中输出,替换掩码“{N}”(这就是为什么需要函数“format”),其中N是参数的数量,如果有几个传递的话。 对于i.g.规则“minlength:10”表示“10”是处理程序函数中第三个变量的值。

如果您没有指定默认消息,则可以在“消息”部分中定义:

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

希望按以下顺序包含js代码:

  1. “验证”插件
  2. “addMethod”说明
  3. “本地化”文件
  4. 你的onLoad代码与$('#someForm')。validate({...})

答案 2 :(得分:0)

如果你想要,例如“customPassword”验证。

  1. 使.js文件结束时使用区域设置代码(messages_en.js,messages_de.js)。
  2. 根据所选应用语言包含文件。
  3. 添加如下翻译讯息:
  4. $.extend( $.validator.messages, {
    	customPassword: "One number, small and big letter and min 8 chars.",
    	required: "This field is required.",
    	remote: "Please fix this field."
    });

    1. 然后添加方法whit第二个参数“$ .validator.messages.customPassword”而不是字符串消息。
    2. jQuery.validator.addMethod("customPassword", function(value, element, params){
          return this.optional(element) || (value.match(/((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,50})/));
      }, $.validator.messages.customPassword);