jquery验证插件,如何在自定义方法中添加多个自定义消息

时间:2012-08-08 07:51:08

标签: jquery validation jquery-validate

我正在使用jquery validation plugin

我使用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 根据错误类型设置var telNumberErrorNo 的值。 所有错误消息都在数组 telNumberErrors

现在我的要求是如何显示现在正在提醒的错误消息。

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

我也试过只传递这个telNumberErrors[telNumberErrorNo],但每次只显示一条消息,即telNumberErrors[0]

中包含的消息

请帮帮我

提前致谢

2 个答案:

答案 0 :(得分:7)

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

只需创建一个函数并返回正在警告的错误

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
            }
        }       
    });
});

答案 1 :(得分:1)

以下是我的例子:

$.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: _'
    }   
})