之前也使用過,不過這次做項目發現了一些問題,對方法又稍微改進了一下。
代碼如下:
<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++)發現能用了,不過其中的道理我還是不怎麼清楚,覺的這個方法寫的不是很好,如果大家有更好的方法多多發表呀。