下面的这段代码实现 提示文本框剩余可以输入多少字,我想当输入满130个字以后就不可以再输入了,可是当汉字和数字在一起的时候这段代码超过130字以后还会继续往文本框加字,如何解决这个bug,希望高手帮我测试下<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:mudoo>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>限制文本框</title>
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
maxLen = 130;
function DataLength(fData)
{
var intLength=0
for (var i=0;i<fData.length;i++)
{
if(intLength<130)
{
if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
intLength=intLength+2
else
intLength=intLength+1
}
}
return intLength
}
function checkMaxInput(form) {
if (form.message.value.length > maxLen)
form.message.value = form.message.value.substring(0, maxLen);
// otherwise, update 'characters left' counter
else
form.remLen.value = maxLen - DataLength(form.message.value);
}
// End -->
</script><form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> 你只可以输入130个字<br>
<textarea name=message wrap=physical cols=28 rows=4 onKeyDown="checkMaxInput(this.form)" onKeyUp="checkMaxInput(this.form)"></textarea>
<br>
<input readonly type=text name=remLen size=3 maxlength=3 value="130">还可以输入font>
</form>
s=String(s);
return s.length+(s.match(/[^\x00-\xff]/g) ||"").length;//加上匹配到的全角字符长度
},
checkMaxLength2=function(obj,limit){
var val=obj.value;
if(len(val)>limit) {
//val=val.substr(0,limit);
while(len(val=val.substr(0,val.length-1))>limit);
obj.value=val;
}
};加上onkeyup="checkMaxLength2(this,130)"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>限制文本框</title>
</head>
<body>
<form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> 你只可以输入13个字<br>
<textarea name=message wrap=physical cols=28 rows=4 onKeyDown="checkMaxInput.run(this)" onKeyUp="checkMaxInput.run(this)"></textarea>
<br>
<input readonly type=text name="remLen" id="remLen" size=3 maxlength=3 value="13">还可以输入
<script>
var checkMaxInput = function() {
var getLen = function(str) {return str.replace(/[^\x00-\xff]/g, '--').length;}
var oInfo = document.getElementById('remLen'),
InfoLen = parseInt(oInfo.value, 10),
maxLen = InfoLen || 0; // 最大字数
return {
run: function(o) {
var i = InfoLen - getLen(o.value);
if(i < 0) {
var temp = 0, cut = o.value.substring(0, maxLen);
for(var i = 0, len = cut.length; i < len; i++) {
temp += getLen(cut[i]);
if(temp > maxLen) break;
}
o.value = cut.substring(o, i);
} else {
oInfo.value = i
}
}
};
}();
</script>
</form>
</body>
</html>
<html xmlns:mudoo>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>限制文本框</title>
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function getlen(str){
var l=0;
for(var i=0;i<str.length;i++){
l+=1;
if(str.substring(i,i+1).match(/[\u4e00-\u9fa5]/))l+=1;
}
return l
} function checkMaxInput(form,maxLen) {
form.remLen.value = maxLen - getlen(form.message.value);
if(event.keyCode==8) return true;
if (form.message.value.length >= maxLen){
return false;
}
return true;
}
</script><form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> ?只可以?入130个字<br>
<textarea name=message wrap=physical cols=28 rows=4 onKeyDown="return checkMaxInput(this.form,130)" onKeyUp="checkMaxInput(this.form,130)"></textarea>
<br>
<input readonly type=text name=remLen size=3 maxlength=3 value="130">?可以?入font>
</form>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:mudoo>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>限制文本框</title>
<HTML>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
function beforepaste(maxLen){
var obj=clipboardData.getData("Text");
if(myform.message.value.length+obj.length>maxLen){
myform.message.value=(myform.message.value+obj).substring(0,maxLen);
clipboardData.setData("Text","");//clear clipboarddata
}
}function getlen(str){
var l=0;
for(var i=0;i<str.length;i++){
l+=1;
if(str.substring(i,i+1).match(/[\u4e00-\u9fa5]/))l+=1;
}
return l
} function checkMaxInput(form,maxLen) {
form.remLen.value = maxLen - getlen(form.message.value);
if(event.keyCode==8) return true;
if (form.message.value.length >= maxLen){
return false;
}
return true;
}
</script><form name=myform action="YOUR-SCRIPT.CGI">
<font size="1" face="arial, helvetica, sans-serif"> ?只可以?入130个字<br>
<textarea name=message wrap=physical cols=28 rows=4 onbeforepaste="beforepaste(130);" onKeyDown="return checkMaxInput(this.form,130)" onKeyUp="return checkMaxInput(this.form,130)"></textarea>
<br>
<input readonly type=text name=remLen size=3 maxlength=3 value="130">?可以?入font>
</form>