나는 내가 작성한 자동 완성 기능이있는 검색 상자가 있습니다. 나는 몇 가지 문제가있다.jQuery를 사용하여 목록을 통해 넘겨주기
두 가지 :
- 는이 필터에 의해 숨겨진 된 포함의 자동 완성/검색어의 목록을 아래로 arrowing 및합니다. 보이는 목록 항목 만 통과 할 수 있도록하려면 어떻게해야합니까?
입력 할 때 목록에서 항목 중 하나를 선택하면 해당 단어가 검색 상자의 단어와 일치하므로 드롭 다운이 계속 표시됩니다.
$(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