2012-08-08 43 views
3

我使用jquery validation pluginjQuery验证插件,如何在自定义方法添加多个自定义消息

我添加使用addmethod这反过来又调用另一个方法的自定义的方法来检查有效UK telephone number

这里是我的代码(简化):

HTML

<form id="myform"> 
    <label for="field">Required, telephone: </label> 
    <input class="required" id="field" name="field" /> 
    <br/> 
    <input type="submit" value="Submit" /> 
</form> 

的jquery

$(document).ready(function(){ 
    $("#myform").validate({ 
     rules:{ 
      field:{ 
       required:true; 
       UKTelNumber:true 
      } 
     }  
    }); 
}); 

jQuery.validator.addMethod("UKTelNumber", function(value,element) { 

    if (!checkUKTelephone (value)) { 
     alert (telNumberErrors[telNumberErrorNo]); 
     return false; 
    } 
    else { 
     return true 
    }  
},jQuery.validator.format(telNumberErrors[telNumberErrorNo])); 

功能checkUKTelephone设置根据错误的类型的变种telNumberErrorNo的值。 所有错误消息都在数组中telNumberErrors

现在我的要求是,如何显示那些现在被警告的错误消息。

通过jQuery.validator.format(telNumberErrors[telNumberErrorNo])作为消息(第三选项)addMethod没有帮助。

我也试过路过仅此telNumberErrors[telNumberErrorNo]但其只显示一个消息每次包含在telNumberErrors[0]

即消息时,plz帮助我

在此先感谢

回答

5

嗯,我得到了解决我的问题所以我想回答我自己的问题,它可以帮助其他人

只是创建一个函数并返回正在提醒的错误

var dispError = function(){ 
    return telNumberErrors[telNumberErrorNo]; 
} 

,然后传递函数作为第三个参数,以addMethod

jQuery.validator.addMethod("UKTelNumber", function(value,element) {  
    if (!checkUKTelephone (value)) { 
     return false; 
    } 
    else { 
     return true 
    }  
},dispError); 

然后调用validate方法

$(document).ready(function(){ 
    $("#myform").validate({ 
     rules:{ 
      field:{ 
       required:true; 
       UKTelNumber:true 
      } 
     }  
    }); 
}); 
0

这是我的例子:

$.validator.addMethod('variable', function (value, element, params) { 
    if (!/[a-z]/i.test(value[0])) { 
     return this.optional(element) || false; 
    } else if (/[~`!#$%\^&*+=\-\[\]\\';.,/(){}|\\":<>\?]/g.test(value)) { 
     return this.optional(element) || false; 
    } else { 
     return this.optional(element) || true; 
    } 
}, function(error, element) { 
    var value = $(element).val(); 
    if (!/[a-z]/i.test(value[0])) { 
     return 'First character must be a letter' 
    } 
    if (/[~`!#$%\^&*+=\-\[\]\\';.,/(){}|\\":<>\?]/g.test(value)) { 
     return 'No special characters except: _' 
    } 
})