我正在尝试进行类似Facebook的搜索(自动填充),就像在facebook的/ gmail的撰写邮件中一样。我的整个脚本位于http://jsfiddle.net/6YbrP/13/。
if(e.keyCode == 8 && $(this).val() == ''){
$('#itemcontainer div.detailwrapper:last').remove();
}
使用上面的脚本,当我想添加更多项目时,我会输入一些字符并使用退格键再次删除字符,当文本框立即清除它时也会删除最后一个元素。
这不是我想要的。除非用户在文本框清除后再次按退格键,否则不应删除文本框清除时的最后一个元素。逻辑就像在facebook的/ gmail的撰写邮件中一样。所以我该怎么做?对此有什么想法?
答案 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;
});