由于ORACLE数据库里面一个汉字和符号占2 个字节,数字和英文占1个字节,所以用EXTJS的文本框MaxLenght去限制输入的长度是不正确的,因为EXTJS只限制了输入的字数量,而不是字节数量。
解决办法1:
String.prototype.byteLen = function(){
var len = 0;
i = this.length;
while(i--){
len += (this.charCodeAt(i)>255?2:1);
}
return len;
}
然后在文本框控件中加入手动验证:
validator : function(value){
if(value.byteLen() > 20){
return "不能超过20个字符或10个汉字";
}
return true;
}
解决办法2,,正则匹配:
validator:function(value){
var len = value.replace(/[^/x00-/xff]/g,"xx").length;
if(len> 20){
return "不能超过20个字符或10个汉字";
}
return true;
}
用oracle数据库的朋友,一定要注意这些验证,否则保存后台会报错的。