2016-11-16 78 views
1

jQuery验证插件是否可以通过一个字段传递多个方法?如何在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")); 

和一个场返回不同的警告消息:

$("#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时,它不起作用。任何人都知道如何解决它?

+0

调用'的每个()'上的id选择是有点冗余。你的HTML中只有一个id为'form'的元素,对吧? –

+0

@RoryMcCrossan是的!只有一个元素。 –

+0

元素通过这个给我。 –

回答

1

该问题是由于其他方法中的逻辑;他们需要返回一个指示输入值有效性的布尔值。
当前他们尝试用他们定义的验证方法名称不存在的全局方法。

您还需要使用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

+0

谢谢,它的工作原理! :) –

相关问题