之前也使用过,不过这次做项目发现了一些问题,对方法又稍微改进了一下。
代码如下:
<script language="javascript" type="text/javascript">
function isOver(sText, countfield, len) {
var intlen = sText.value.length;
if (intlen > len) {
countfield.value = "最多可输入" + len.toString() + "个字符";
alert("最多可输入" + len + "个字符");
sText.focus();
sText.select();
}
else {
var str = "还可输入的字符数为";
var str2 = sText.value;
var len1 = 0;
for (var i = 1; i <=intlen; i++) {
if (str2.charCodeAt(i) < 128)
len1++;
else
len1 += 2;
}
if (len1 > len) {
alert("最多可输入" + len + "个字符");
}
else {
var str1 = len - len1;
countfield.value = str.toString() + str1.toString();
}
}
}
</script>
以上代码放在<head></head> 区,下面是调用方法 ,在<body></body> 区
<asp:TextBox ID="TexTitle" runat="server" οnkeydοwn="isOver(this,this.form.Text1,100); "></asp:TextBox>
<input id="Text1 " type="text" name="Text1" readonly="readonly" value=‘最多输入100个字符“ /><br />
请注意上面红色字体部分 :之前是for (var i = 0; i <intlen; i++),但发现这样在输入框里输入第一个字符时并不执行事件,输入第二个字符时才执行,改成for (var i = 1; i <=intlen; i++)发现能用了,不过其中的道理我还是不怎么清楚,觉的这个方法写的不是很好,如果大家有更好的方法多多发表呀。