执行一次密钥

时间:2012-06-28 14:33:10

标签: jquery onkeyup

当我开始输入文本框时,我正在尝试加载gif加载程序。我将它附加到包含keyup文本框的div。我遇到的问题是每次输入一个字母时都会附加加载器,而当我输入第一个字母时我只想附加一次。

function loader(){

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

知道怎么做吗?
感谢

3 个答案:

答案 0 :(得分:2)

我的建议是将加载程序硬编码到HTML代码中,然后在.show()事件处理程序上.keyup()

然后例如在.blur()事件.hide()中,问题就消失了。

编辑:

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

$contrib.bind({
    keyup: function(){
       $contrib.find("#loader").show();
    },
    blur: function(){
       $contrib.find("#loader").hide();
    }
});

答案 1 :(得分:2)

添加加载程序后,您可以解除绑定

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
    });
}

答案 2 :(得分:2)

也许这可行:

var pressed = false;
    function loader(){

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

或者不是使用这个布尔值而只是调用unbind而不是我的行说press = true;