我们知道input控件有一个maxlength属性可以控制输入字符的长度,但是,它并不会识别是汉字还是其他符号,所以输入maxlength个汉字显然是不符合要求的。
为了实现对带有汉字的输入框长度控制,参考各位大神的贴子,我总结了一下方案:
定义js方法:
/*限制中英文皆可输入的文本框长度,使用方式参考以下:*/ /*<input type="text" onkeyup="checkLength(this, 10);" />*/ var checkLength = function(dom, maxLength){ var l = 0; for(var i=0; i<dom.value.length; i++) { if (/[\u4e00-\u9fa5]/.test(dom.value[i])) { l+=2; } else { l++; } if (l > maxLength) { dom.value = dom.value.substr(0,i); break; } } };
其中 /[\u4e00-\u9fa5]/ 为匹配汉字的正则。
达到maxlength时候,输入输入字符将不会在显示。