автозаполнение JQuery-UI не выбирает при входе - PullRequest
8 голосов
/ 29 июля 2010

Я использовал jquery-ui для автозаполнения поля ввода и установки скрытого значения из выбранного элемента.

Это я сделал с помощью опции

 select: function(event, ui) { ...$("#myDiv").val(ui.item.value)... } 

(может быть, сейчас это неправильно, код не под рукой, но он работает до моего вопроса ...)

Работает при выборе элемента из меню с помощью мыши, однако, если я просто ввожу какой-то текст и выбираю элемент с помощью Enter - он ничего не делает, это как если бы выбор вообще не выполнялся автозаполнениемфункция.Тем не менее, вкладка «из коробки» вызывает выбор.

Я использовал фокус и изменение: чтобы также обновить поля, которые я хочу, но я думаю, что это излишне, если действительно необходимо указать весь фокус, измените и выберите, просто чтобы быть уверенным, что пользователь выберет элемент из списка, в котором он будет выбран.

Спасибо.

rofly: Я использую автозаполнение jquery-uiУ него есть код, который вы даете, но он выглядит так (из jquery.ui.autocomplete.js)


case keyCode.ENTER:
                case keyCode.NUMPAD_ENTER:
                    // when menu is open or has focus
                    if ( self.menu.active ) {
                        event.preventDefault();
                    }
                    //passthrough - ENTER and TAB both select the current element
                case keyCode.TAB:
                    if ( !self.menu.active ) {
                        return;
                    }
                    self.menu.select( event );
                    break;

Это выглядит просто шикарно, поэтому я не уверен, что из-за этого не получится.

Мой код похож на этот (обернут в document.read ()

$("#someDiv").attr("autocomplete", 'off');
$("#someDiv").autocomplete({
source: function(request, response) {
if ( request.term in cache ) {
response( cache[ request.term ] );
return;
}
$.ajax({
url: "giveMeJSON.jsp",
dataType: "json",
data: request,
success: function( data ) {
cache[ request.term ] = data;
response( data );
}
})},
minLength: 1,
delay: 300,
select: function(event, ui) {
$("#someDiv").val(ui.item.label);
$("#hiddenDiv").val(ui.item.value);
}
});

, поэтому проблема в том, что это работает, когда пользователь выбирает из меню мышью И при выводе табуляцииполя (keyUp, keyDown, чтобы выбрать, затем нажать, работает), но keyUp, keyDown, чтобы выбрать его, затем ввести, и ничего не происходит!

Ответы [ 3 ]

6 голосов
/ 06 января 2011

Подобный экземпляр работает для меня с jQuery 1.4.2 и jQuery-ui 1.8.7.Одно предостережение: Enter работает только при выборе элемента из списка.Если вы создаете новую запись, которая не существует, нажатие Enter не будет вызывать события выбора или изменения.Мне пришлось привязать отдельный обработчик событий, чтобы ситуация вылетела.

2 голосов
/ 06 мая 2011

Это сработало для меня, когда я отправлял форму после автозаполнения.

    $("input#searchbox").autocomplete({
  source: autocomplete,
  select: function(event, ui) {  }
    $("input#searchbox").val(ui.item.value);
    $("#searchform").submit();
  }
})

С Поиск по клику с автозаполнением Jquery

1 голос
/ 11 июля 2014

есть этот параметр?set
autoFocus: true

Смотрите ответ здесь: https://stackoverflow.com/a/9243511/74585

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...