自定义validateEngine带有参数的验证方法,其中有一个是通过外部的function调用,官网有详细介绍,这里就不啰嗦了。
funcCall | validate[funcCall[functionName]] | 调用外部函数验证 functionName(field, rules, i, options) |
另一种方法进行修改jquery.validateEngine.js方法,首先在验证规则中添加你定义的规则名称,如numberRange[int,int]表示验证小数的整数部分长度以及小数精度。
1>在_validityProp里面加上要验证的属性
"numberRange": "range-overflow",
2>在_validateField方法中添加rules规则validate。
case "numberRange":
errorMsg = methods._getErrorMessage(form, field,rules[i], rules, i,
options, methods._numberRange);
break;
3>添加_numberRange方法以及_numberRegex方法
/**
* Checks number range
*
* @param {jqObject} first field name
* @param {jqObject} second field name
* @return an error string if validation failed
*/
_numberRange: function (field, rules, i, options) {
var _int = parseFloat(rules[i + 1]);
var _digit = parseFloat(rules[i + 2]);
if(_int < 1 || _digit < 1){
return options.allrules[rules[i]].alertText+_int+options.allrules[rules[i]].alertText2
+_digit+options.allrules[rules[i]].alertText3;
}
if (!methods._numberRegex(field.val(),_int,_digit)) {
return options.allrules[rules[i]].alertText+_int+options.allrules[rules[i]].alertText2
+_digit+options.allrules[rules[i]].alertText3;
}
},
_numberRegex: function (value,_int, _digit) {
var values = value.split(".");
var intRegEx = new RegExp(/^\d+$/);
if(parseFloat(values[0].length) <= 0 || parseFloat(values[0].length) > _int){
return false;
}
if(values[1]){
if(parseFloat(values[1].length) <= 0 || parseFloat(values[1].length) > _digit)
{
return false;
}
if(!intRegEx.test(values[1]))
{
return false;
}
}
return intRegEx.test(values[0]);
},
4>在jquery.validationEngine-zh_CN.js 添加提示的验证信息
"numberRange": {
"regex": "none",
"alertText": "* 无效的数值(",
"alertText2": ",",
"alertText3": ")",
}
5>在JSP中class中直接写入就可以验证了
class="validate[numberRange[1,2]]"