textbox、textarea多行文本文字长度限制
textbox 设置为多行显示解析后就变成了 textarea,在textbox多行显示模式下,属性 MaxLenght 失效,所以得用 Javascript(js)来检查输入文本字符串的长度。如果是单纯的中文或英文很容易判断,关键是中英文混合的情况,需要把中文和英文区别开判断它们的长度。
这也涉及到字符编码问题,根据字符编码范围区别是中文还是英文,这主要由 js 来判断,了解这些后就看具体的实例。
textbox多行显示:
<div>
文本文字长度测试:<asp:TextBox ID="tbTest" runat="server" TextMode="MultiLine" />
<asp:Button ID="btn" runat="server" OnClientClick="CheckText()" Text="提交" />
</div>
textbox解析后变为textarea:
文本文字长度测试:<textarea name="tbTest" rows="2" cols="20" id="tbTest">
js统计输入中英文字符串长度和 textarea 长度限制代码:
<script type="text/javascript">
function getTextLength(text) {
var length = 0;
for (var i = 0; i < text.length; i++) {
if (text.charCodeAt(i) > 127 || text.charCodeAt(i) == 94) {
length += 2;
} else {
length++;
}
}
return length;
}
function CheckText() {
var val = document.getElementById("tbTest").value;
var length = getTextlengths(val);
if(length > 500){
alert("输入文本不能大于500!");
return;
}
}
</script>
getTextLength(text)方法是通过把字符转为 ASCII 码,再根据中文在 ASCII 码中的范围确定是中文还是英文。如果是中文,长度加2,否则长度加1。
此外,还有另外一种简单的统计中英文字符串长度方法:
function getTextlengths(text) {
return text.replace(/[^\x00-\xff]/g, "**").length;
}
该方法是用两个*取代中文,然后再返回字符串的长度,写法十分简单。