文本框清除后如何检测“第二退格”?

时间:2012-12-02 13:56:59

标签: jquery event-handling

我正在尝试进行类似Facebook的搜索(自动填充),就像在facebook的/ gmail的撰写邮件中一样。我的整个脚本位于http://jsfiddle.net/6YbrP/13/

        if(e.keyCode == 8 && $(this).val() == ''){
            $('#itemcontainer div.detailwrapper:last').remove();
        }

使用上面的脚本,当我想添加更多项目时,我会输入一些字符并使用退格键再次删除字符,当文本框立即清除它时也会删除最后一个元素。

这不是我想要的。除非用户在文本框清除后再次按退格键,否则不应删除文本框清除时的最后一个元素。逻辑就像在facebook的/ gmail的撰写邮件中一样。所以我该怎么做?对此有什么想法?

4 个答案:

答案 0 :(得分:4)

只需使用keydown代替keyup

$('#searchnama').keydown(function(e){
    if(e.keyCode == 8 && $(this).val() == ''){
        $('#itemcontainer div.detailwrapper:last').remove();
    }
});

答案 1 :(得分:0)

preKeycode = '';
$('#searchnama').keyup(function(e){
    if(e.keyCode == 8 && $(this).val() == ''){
        $('#itemcontainer div.detailwrapper:last').remove();
    }

    // check previous key code and current key code
    if(preKeycode == 8 && e.keyCode==8){

    }

    preKeycode = e.keyCode;
});

答案 2 :(得分:0)

如果KeyDown上输入为空,请跟踪:

$('#searchnama').keydown(function(e){
    $(this).data('empty', !$(this).val());
});

$('#searchnama').keyup(function(e){
    if(e.keyCode == 8 && $(this).data('empty') ){
        $('#itemcontainer div.detailwrapper:last').remove();
    }
});

答案 3 :(得分:0)

这是另一种方法jsfiddle !! 想法是添加一个标志,如果它是最后删除的char,则存储! 希望这可以提供帮助!

var IsLast = false;   
$('#searchnama').keyup(function(e){
    if(e.keyCode == 8 && !this.value && !IsLast){
        $('#itemcontainer div.detailwrapper:last').remove();
    }
    IsLast= this.value;
    });