之前也使用过,不过这次做项目发现了一些问题,对方法又稍微改进了一下。
代码如下:
<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" onkeydown="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++)发现能用了,不过其中的道理我还是不怎么清楚,觉的这个方法写的不是很好,如果大家有更好的方法多多发表呀。
本文介绍了一种改进的JavaScript方法,用于实时监控文本框中输入的字符数量,并确保不超过预设的最大长度限制。该方法能够区分英文和中文字符的占用空间,同时解决了输入首个字符时不触发事件的问题。
&spm=1001.2101.3001.5002&articleId=5402106&d=1&t=3&u=7ddb056a797843beb0a7f163df4468c7)
528

被折叠的 条评论
为什么被折叠?



