jQuery验证插件:如何在自定义方法中添加多个自定义消息?

5

我正在使用jquery验证插件

我使用addmethod添加了一个自定义方法,该方法调用另一个方法检查有效的英国电话号码

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

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]中的消息。 请帮助我。 提前感谢您。
2个回答

8

我已经找到了解决方案,所以我想回答自己的问题,希望可以帮助其他人

只需创建一个函数并返回正在发出警报的错误即可

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

Here is my example:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接