输入框如何限制中英字符长度不等?
发布网友
发布时间:2022-05-02 04:40
我来回答
共2个回答
热心网友
时间:2022-05-14 11:45
直接使用正则表达式获取中英混合字符串的长度,可以统一*的字符数;
示例代码:<td><input title="每行最多输入71个字符,超出范围或无法输入时,请手动换行..." align="right"
onkeyup="yanzheng1(this, 10);" onblur="yanzheng1(this, 10);" name="causeVerify" size="113" value="${causeVerify }" class="lineStyle2"></td>
其中使用了失去焦点的触发事件是为了处理使用鼠标复制、粘贴的情况;
JS:
热心网友
时间:2022-05-14 13:03
我这正好有个实现方法:
这个是简单点的:
function checkWord(len,evt){
//len为英文字符的个数,中文自动为其一般数量
//evt是欲检测的对象
var str = evt.value;
var myLen = 0;
for(i=0; i<str.length&&myLen<=len; i++){
if(str.charCodeAt(i)>0&&str.charCodeAt(i)<128)
myLen++;
else
myLen+=2;
}
if(myLen>len){
alert("您输入超过限定长度");
evt.value = str.substring(0,i-1);
}
}
用的时候,可以把函数checkWord绑定到输入框的blur或onkeyup等事件上
例如:
<input type="text" onblur="checkWord(20,this)" />
//上面的这个this就这样写就行了
还有一个复杂点的:
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
function checkWord(len,evt){
if(evt==null) evt = window.event;
var src = evt.srcElement ? evt.srcElement : evt.target;
var str=src.value.trim();
var myLen = 0;
for(i=0;(i<str.length)&&(myLen<=len);i++){
if(str.charCodeAt(i)>0&&str.charCodeAt(i)<128)
myLen++;
else
myLen+=2;
}
if(myLen>len){
alert("您输入超过限定长度");
src.value=str.substring(0,i-1);
}
}
用法类似,可以把函数checkWord绑定到输入框的blur或onkeyup等事件上
例如:
<input type="text" onblur="checkWord(20,event)" />
//上面的这个event就这样写就行了