5

我正在使用jquery 验证插件

我使用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

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

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

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

请帮帮我

提前致谢

4

2 回答 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
            }
        }       
    });
});
于 2012-08-08T13:24:09.503 回答
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: _'
    }   
})
于 2017-03-10T23:29:17.710 回答