这是场景:
我正在尝试显示“剩余 XY 字符”指示,并将 texbox 中的字符限制为用户类型。我也有多行 tebox,所以 MaxLength 并不总是对我有用(别担心,我也在服务器端检查)。
这是我学到的: onkeyup 与此功能完美配合:
function LimtCharacters(txtMsg, CharLength, indicator) {
chars = txtMsg.value.length;
document.getElementById(indicator).innerHTML = CharLength - chars;
if (chars > CharLength) {
txtMsg.value = txtMsg.value.substring(0, CharLength);
}
}
但是,我还需要检测粘贴的值。如果用户使用 CTRL+V 就可以,但如果用户使用鼠标粘贴,这将不起作用。我了解到,在这种情况下,我们需要延迟(此处): Javascript OnPaste
所以,我像这样更新(添加了 onPaste 事件):
/* FUNCTION THAT LIMITS INSERTED CHARACTERS IN TEXTBOX */
function LimtCharacters(txtMsg, CharLength, indicator) {
chars = txtMsg.value.length;
document.getElementById(indicator).innerHTML = CharLength - chars;
if (chars > CharLength) {
txtMsg.value = txtMsg.value.substring(0, CharLength);
}
}
/* Delay is needed if user uses paste with mouse (right click and paste). After delay same function (LimtCharacters) can be called*/
function pasted(txtMsg, CharLength, indicator) {
setTimeout(function () {
LimtCharacters(txtMsg, CharLength, indicator);
}, 10);
}
ASPX 文件中的标记:
<asp:TextBox ID="tbTitle" runat="server" ClientIDMode="Static" MaxLength="255"
onKeyup="LimtCharacters(this,255,'lblTitleCount')"
onPaste="pasted(this,255,'lblTitleCount')" />
<asp:Label ID="lblTitleCount" Text="255" runat="server" ClientIDMode="Static" />
lblTitle 是显示“剩余字符”值的标签。
它在 FireFox 和 Chrome 中完美运行。但它在 IE 中不起作用。
我究竟做错了什么?
我正在使用 Visual Studio 2010 .net。
任何提示/帮助将不胜感激;)