文本框字符长度的限制
archt
2008-05-26
<script type="text/javascript">
function textListener(obj,lengthLimit) { var byteLength = 0; var strInput = document.getElementById(obj).value; for(var i=0;i<strInput.length;i++) { var ch = strInput.charAt(i); if(isNormalChar(ch)) byteLength += 1; else byteLength += 2; } if(byteLength<lengthLimit) { document.getElementById(obj).maxLength = lengthLimit; } if(byteLength>=lengthLimit) { var str = document.getElementById(obj).value; var byteLength2 = 0; var temp = ""; for(var i=0;i<str.length;i++) { var ch = str.charAt(i); if(isNormalChar(ch)) byteLength2 += 1; else byteLength2 += 2; if(byteLength2>lengthLimit) { break; } temp = temp+ch; } document.getElementById(obj).maxLength = temp.length; document.getElementById(obj).value=temp; } } function isNormalChar(ch) { if(ch.length>1){ return false; } if(ch == ""){ return true; } var pattern = /^([\\uFF66-\\uFF9F]|[\\u0000-\\u00FF])*$/gi; if (pattern.test(ch)){ return true; }else{ return false; } } </script> 遗憾的是在一次性输入汉字超过限定长度时,文本框字符有一次闪动,请各位大虾指导,谢谢! |
|
qingjian
2008-05-26
....text ;里面有个 maxlength 的属性 设置一下就ok 了
|
|
dmewy
2008-05-27
同上!
|
|
archt
2008-05-30
哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!
|
|
weiweichen1985
2008-06-04
archt 写道 哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!
是不是汉字在每个数据库中占有的字符也是不同的呢??? 刚才测试了下以前的一个小例子 ssh+mysql5.0 一个表users中一个name字段 类型varchar(20) 我插值的时候 测试了两个汉字值都成功了 一一一一一一一一一一一一一一一一一一一二 一一一一一一一一一一一一一一一一一一一一 这两个汉字用length()获取长度是20啊... 也插进去了。。。 楼上的能说明一下吗???不是说不一样吗??? |
|
archt
2008-06-04
主要是看你数据库的字符编码集是什么?
|
|
weiweichen1985
2008-06-11
mysql数据库字符编码是gbk
页面编码也是gbk |
|
hax
2008-06-11
archt 写道 哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!
什么叫长度不一样?请问这个长度对用户有什么意义吗?! 当你做一个事情的时候,应该先想想需求到底是否合理。 |
|
smalljeff
2008-06-11
代码格式化
|
|
archerzz
2008-06-25
archt 写道 哈哈 maxlength 没用汉字和英文字母的长度不一样,而且在数据库占不同的字符宽度 所以在文本框的长度是变化的!
在FF3下试了一下,似乎英文字符和中文字符都算一个的。 |