我有一個搜索框,它具有我已經構建的自動完成功能。我有幾個問題。使用jQuery通過列表箭頭
兩件事情:
當通過自動完成/搜索術語,它包括那些由過濾器隱藏列表arrowing上下。我如何確保只有可見列表項可以遍歷?
當我按Enter鍵從列表中選擇一個項目時,下拉列表仍然存在,因爲它與搜索框中的單詞匹配。
某些代碼:
$(document).ready(function() {
$("#dropdown").hide();
$("input").keyup(function() {
if (this.value.length) {
var that = this;
$("#dropdown li").hide().filter(function() {
return $(this).html().toLowerCase().indexOf(that.value.toLowerCase()) !== -1;
}).show();
$("#dropdown").show();
}
else {
$("#dropdown").hide();
}
});
$('li').click(function() {
$('#search').val($(this).text());
$("#dropdown").hide();
});
var li = $('li');
var liSelected;
$('input').keydown(function(e) {
if(e.which === 40) {
if(liSelected) {
liSelected.removeClass('selected');
next = liSelected.next();
if(next.length > 0) {
liSelected = next.addClass('selected');
$('#search').val(liSelected.text());
}
else {
liSelected = li.eq(0).addClass('selected');
}
}
else {
liSelected = li.eq(0).addClass('selected');
}
}
else if(e.which === 38) {
if(liSelected) {
liSelected.removeClass('selected');
next = liSelected.prev();
if(next.length > 0) {
liSelected = next.addClass('selected');
}
else {
liSelected = li.last().addClass('selected');
}
}
else {
liSelected = li.last().addClass('selected');
}
}
else if(e.which === 13) {
$('#search').val(liSelected.text());
$("#dropdown").hide()
$('#search').blur();
}
});
});
對不起,但我沒有遇到你在談論的問題。你測試過哪個瀏覽器? –
鉻。嘗試在搜索框中輸入「a」並在列表中向下箭頭。你會看到選擇將消失一秒鐘然後回來。這是因爲它在列表中選擇了被過濾掉的隱藏項目。 – Jon