2

この質問に基づくカウンターの値に基づくフェードイン/フェードアウトテキスト

私は次のマークアップを持っています:-

<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では、特にテキストエリアからテキストを削除すると、.live()イベントが発生しないようです。

上記を示すフィドルがあります。Firefoxの機能を正常にロードし、IEをロードしてテキスト領域にテキストを追加してから、バックスペースキーを使用してテキストを削除します。

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

doesentを使用しonた編集は違いを生むようですが、バグはまだ残っています。

4

3 に答える 3

3

jQueryのバージョンによっては、.live()の代わりに.on()を使用し、にバインドする代わりに、イベントをキャッチするためにinput使用します。keyup

jQuery('#TextBox1').on('keyup', function() { });
于 2012-05-28T08:19:52.390 に答える
1

一般的にサポートされていないkeyupイベントの代わりにイベントを使用できます。また、非推奨の代わりにinput使用することもできます:onlive

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

デモ:http: //jsfiddle.net/CsXU8/10/

于 2012-05-28T08:22:58.337 に答える
0

IE8 / 9の場合、次のコードを使用して最初の行を置き換えます

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

于 2012-05-28T08:20:12.537 に答える