由於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數據庫的朋友,一定要注意這些驗證,否則保存後臺會報錯的。