业务场景需:要对输入框的字符个数做限制,该插件汉字是算一个字符的但在数据库中是算两个,所以需要自定义验证对个数限制
1、自定义规则
$.validator.addMethod("countMaxLength", function (value, element, params) {
var inputLength = 0;
//给一个变量来记录长度
for (var i = 0; i < value.length; i++) {
var countCode = value.charCodeAt(i);
//返回指定位置的字符的Unicode编码
//判断是不是ASCII码,Unicode码前128个字符是ASCII码
if (countCode >= 0 && countCode <= 128) {
inputLength++;
} else {
//如果是扩展码,则一次+2
inputLength += 2;
}
}
if (inputLength <= params) {
return true;
} else {
$(element).data('error-msg', '超过最大长度' + params + '!');
return false;
}
}, function (params, element) {
return $(element).data('error-msg');
});
二、引用的地方
purchaseNo: {countMaxLength: 10}
$("#form-mdDrugExpand-edit").validate({
rules: {
medicId: {required: true, digits: false, maxlength: 36},
handselDrugCode: {maxlength: 10},
purchaseNo: {countMaxLength: 10},
},
submitHandler: function (form) {
saveExpand();
},
errorPlacement: function (error, element) {
error.appendTo(element.parent().after());
}
});