4

テキストボックスへの入力を開始するときに gif ローダーを読み込もうとしています。キーアップのテキストボックスを含む div に追加しています。私が抱えている問題は、最初の文字を入力したときに一度だけ追加したいのに、文字を入力するたびにローダーが追加されることです。

function loader(){

    $('#contrib_search').bind('keyup', function(){
        $('#contrib_text').append('<div id="loader"></div>');
    });
}

これを行う方法はありますか?
ありがとう

4

4 に答える 4

4

one」を使用すると、次のことが役立ちます。

function loader() {
  $('#contrib_search').one('keyup', function () {
    $('#contrib_text').append('<div id="loader"></div>');
  });
}
于 2015-09-14T06:21:21.333 に答える
3

ローダーを追加した後、キーアップのバインドを解除できます

function loader(){

    $('#contrib_search').bind('keyup', function(){
        $('#contrib_text').append('<div id="loader"></div>');
        $('#contrib_search').unbind('keyup');  //or $(this).unbind probably a tad faster
    });
}
于 2012-06-28T14:38:15.327 に答える
2

多分これはうまくいくかもしれません:

var pressed = false;
    function loader(){

        $('#contrib_search').bind('keyup', function(){
            if (pressed == false ){
                $('#contrib_text').append('<div id="loader"></div>');
                pressed = true;
            }
        });
    }

または、このブール値を使用する代わりに、pressed=trueと言っている私の行の代わりにunbindを呼び出すだけです。

于 2012-06-28T14:39:18.747 に答える
2

私のアドバイスは、ローダーをHTMLコードにハードコードして.show()から、.keyup()イベントハンドラーにハードコードすることです。

次に、たとえば、それと問題がなくなった場合に.blur()備えて。.hide()

編集:

var $contrib = $('#contrib_text');

$contrib.bind({
    keyup: function(){
       $contrib.find("#loader").show();
    },
    blur: function(){
       $contrib.find("#loader").hide();
    }
});
于 2012-06-28T14:36:32.160 に答える