如何在 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()
将输入的文本值转换为整数,以便与您的 num
和 range
值进行比较。此外,应在验证器方法中声明这些变量,以解决任何范围界定问题。
试试这个:
$.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"));
能否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()
将输入的文本值转换为整数,以便与您的 num
和 range
值进行比较。此外,应在验证器方法中声明这些变量,以解决任何范围界定问题。
试试这个:
$.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"));