首页  >  文章  >  数据库  >  解决EXTJS文本框长度验证在ORACLE数据库下不正确的问题

解决EXTJS文本框长度验证在ORACLE数据库下不正确的问题

WBOY
WBOY原创
2016-06-07 15:37:221112浏览

由于ORACLE数据库里面一个汉字和符号占2 个字节,数字和英文占1个字节,所以用EXTJS的文本框MaxLenght去限制输入的长度是不正确的,因为EXTJS只限制了输入的字数量,而不是字节数量。 解决办法1: String.prototype.byteLen = function(){ var len = 0; i =

由于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数据库的朋友,一定要注意这些验证,否则保存后台会报错的。

 

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn