我想使用jQuery Validate来验证年龄在元数据标签中的两年之间,并指定年份作为参数。
我遇到的问题是我无法将参数作为对象传递,因此我不知道如何在错误消息中访问它们(并且无法找到任何文档)。
的HTML
<input type="text" name="dob" id="dob" validAge="[17,66]" />
的JavaScript
jQuery.validator.addMethod('validAge', function (value, element, params) {
value = eLifeViewModel.age();
if (value === '') {
return false;
}
var range = JSON.parse(params);
return value > range[0] && value < range[1];
}, $.format('Applicants must be older than {0} and younger than {1} years of age'));
{0}的输出是我的参数字符串,{1}的输出是HTTPInputElement。
现在,我已经编写了minAge和maxAge函数来解决此问题,但是我仍然渴望获得对此的解决方案。
您找不到文档,因为您做不到。
使用jQuery Validation插件和自定义方法,validAge
当您需要传递参数时,不能内联声明规则。
<input type="text" name="dob" id="dob" validAge="[17,66]" />
只能内联声明可以用布尔值声明的某些规则(可以声明为class
名称),或者也是HTML5验证属性的规则。
对于带有参数的自定义方法,必须(可以)在.validate()
方法中声明...
$('#myform').validate({
// your options, rules, etc,
rules: {
dob: {
validAge: [17,66]
}
}
});
编辑:
正如@John Bubriski指出的那样,这应该可以工作。OP在其自定义方法中未正确访问参数。
OP正在使用JSON.parse ...
var range = JSON.parse(params);
由于控制台无法识别params
为有效的JSON字符串,因此会在控制台中显示语法错误。params
无需解析变量。
参数被传递到功能params
,因此它们可以被直接作为访问params[0]
,params[1]
等等。
jQuery.validator.addMethod('validAge', function (value, element, params) {
value = eLifeViewModel.age();
if (value === '') { // <- You do NOT need this!
/* Use the "required" rule instead of this conditional */
return false;
}
return value > params[0] && value < params[1];
}, $.format('Applicants must be older than {0} and younger than {1} years of age'));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句