我們知道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時候,輸入輸入字符將不會在顯示。