摘要PS:
控制范围:文本输入byte数判断,全半角判断,不同文言显示,最后是删除多余字节数文言。
Code Sample:
<Head...>
.........
<script language="javascript" type="text/javascript">
function formatText(text, length) {
var maxLength = new Number(length); // Change number to your max length.
var str = document.getElementById('txaComment').value;
var iBLen = 0;
var strBLen = 0;
for (i = 0; i < str.length; i++) {
if (str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126) { // 全角
iBLen += 2;
} else {
iBLen++;
}
}
strBLen = iBLen;
var iLen = 0;
var oLen = 0;
var justMsg = "输入文字数已经到达最大数位。"
var overMsg = "输入文字数已经超过最大数位。";
var aPartMsg = "";
var bPartMsg = "(※全角文字是2位。最大" + maxLength + "位、现在是" + strBLen + "位。)";
var alertMsg = "";
for(i = 0; i < str.length; i++){
if (iLen < maxLength ) {
if (str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126) { // 全角
iLen += 2;
} else {
iLen++;
}
}
if (iLen > maxLength ) {
oLen = i;
aPartMsg = overMsg;
alertMsg = aPartMsg + bPartMsg;
alert(alertMsg);
break;
}
else if(iLen == maxLength ) {
oLen = i + 1;
if (strBLen == maxLength ) {
aPartMsg = justMsg;
}
else if (strBLen > maxLength ) {
aPartMsg = overMsg;
}
alertMsg = aPartMsg + bPartMsg;
alert(alertMsg);
break;
}
}
if (oLen > 0) {
text.value = text.value.substring(0, oLen);
}
}
</script>
</Head>
.........
<body ...>
<table...>
<tr>
<td align=center>
<asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine" Width="90%" onKeyUp="javascript:Count(this,20);"
MaxLength="20" TabIndex="1" Height="100px">
</asp:TextBox>
</td>
</tr>
</table>
</body>