IE中的jQuery .live('input)在删除文本时无法正常工作

时间:2012-05-28 08:14:33

标签: jquery internet-explorer

基于此问题Fade in/out text based upon value of counter

我有以下标记: -

<textarea id="TextBox1"></textarea>
<br/>
<span id="validator" style="display:none"></span>

和以下jQuery: -

jQuery('#TextBox1').live('input', function() {

    var charLength = $(this).val().length;

    $('#validator').html(charLength + ' of 250 characters used');
    $('#validator').fadeInOrOut(!! charLength);

    if ($(this).val().length > 250) {
        $('#validator').html('<strong>You may only have up to 250 characters !</strong>');
    }

});

jQuery.fn.fadeInOrOut = function(status) {
    return status ? this.fadeIn() : this.fadeOut();
}; 

这在Firefox中运行良好,但在IE中,特别是从textarea中删除文本时,.live()事件似乎没有被触发。

这里有一个小提琴演示上面的内容,如果你加载Firefox功能正常,加载IE并添加一些文本到textarea,然后使用退格键删除一些文本。

http://jsfiddle.net/general_exception/CsXU8/

使用on doesent的

编辑似乎有所作为,该错误仍然存​​在。

3 个答案:

答案 0 :(得分:3)

根据您的jQuery版本,使用.on()代替.live(),而不是绑定到input,只需使用keyup来捕获事件

jQuery('#TextBox1').on('keyup', function() { });

答案 1 :(得分:1)

您可以使用keyup事件代替通常不支持的input。您也可以使用on代替弃用live

jQuery(document).on('keyup', '#TextBox1', function() {
    ...
});

DEMO: http://jsfiddle.net/CsXU8/10/

答案 2 :(得分:0)

对于IE8 / 9,使用以下代码替换第一行

jQuery('#TextBox1').on('keyup', function() {