1

这是场景:

我正在尝试显示“剩余 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。

任何提示/帮助将不胜感激;)

4

1 回答 1

2
<script type="text/javascript">
    $(document).ready(function () {
        $("#tbTitle").on("input", function () {
            LimtCharacters(this, 255, 'lblTitleCount');
        });
    });               
</script>


//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);
        //Text in textbox was trimmed, re-set indicator value to 0
        document.getElementById(indicator).innerHTML = 0;
    }
}
于 2013-10-28T07:39:24.667 回答