1

我正在尝试进行类似 facebook 的搜索(自动完成),如 facebook/gmail 的撰写消息。我的整个脚本位于http://jsfiddle.net/6YbrP/13/

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

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

这不是我想要的。文本框清除时不应删除最后一个元素,除非用户在文本框清除后再次按下退格键。逻辑与 facebook/gmail 的撰写消息中的一样。所以我该怎么做?对此有任何想法吗?

4

4 回答 4

4

只需使用keydown而不是keyup.

$('#searchnama').keydown(function(e){
    if(e.keyCode == 8 && $(this).val() == ''){
        $('#itemcontainer div.detailwrapper:last').remove();
    }
});
于 2012-12-02T14:04:21.190 回答
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;
});
于 2012-12-02T14:04:15.453 回答
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();
    }
});
于 2012-12-02T14:04:54.260 回答
0

这是jsfiddle的另一种方法!这个想法是添加一个标志并存储它是否是最后一个删除的字符!希望这可以帮助!

var IsLast = false;   
$('#searchnama').keyup(function(e){
    if(e.keyCode == 8 && !this.value && !IsLast){
        $('#itemcontainer div.detailwrapper:last').remove();
    }
    IsLast= this.value;
    });
于 2012-12-02T14:26:27.127 回答