如何在 jQuery 验证中为一个字段添加多种方法

How to add multiple methods for one field in jQuery validate

能否jQuery验证插件通过一个字段传递多个方法?

例如添加两个方法:

var num1 = 1;
    num2 = 10;
    range1 = 100;
    range2 = 250;
    value = $("#something_from_html")

$.validator.addMethod("method_one", function( value, element ) {
    if(value < num1 || value > num2)
        return false;
    return method_one(value, num1, num2);
}, I18N("wrong number"));


$.validator.addMethod("method_two", function( value, element ) {
    if( value < range1 || value > range2) 
        return false;
    return method_two(value, range1, range2);   
}, I18N("wrong range"));

和return对一个字段的不同警告消息:

$("#form").each(function(index, el)  {
    $(el).validate({
        rules: {
            something_from_html: {
                required: true,
                method_one: true,
                method_two: true
            },
        },

    });
});

HTML部分:

<form id="form" name="form">    
    <input type="text" name="something_from_html" id="something_from_html">
</form>

当我将一种方法添加到规则时,它运行得很好。但是当我同时添加 method_one 和 method_two 时,它不起作用。有人知道怎么解决吗?

问题是由于您的附加方法中的逻辑;他们需要 return 一个布尔值来指示输入值的有效性。
目前他们试图用他们定义的不存在的验证器方法名称调用全局方法。

您还需要使用 parseInt() 将输入的文本值转换为整数,以便与您的 numrange 值进行比较。此外,应在验证器方法中声明这些变量,以解决任何范围界定问题。
试试这个:

$.validator.addMethod("method_one", function(value, element) {
    var num1 = 1, num2 = 10;
    value = parseInt(value, 10);
    return !(value < num1 || value > num2);
}, I18N("wrong number"));


$.validator.addMethod("method_two", function(value, element) {
    var range1 = 100, range2 = 250;
    value = parseInt(value, 10);
    return !(value < range1 || value > range2);
}, I18N("wrong range"));

Working example