автозаполнение jQuery-ui не выбирается при вводе

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

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

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

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

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

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

спасибо.

rofly: я использую jQuery-интерфейс автозаполнения, это кода ты даешь, но похоже это (из jquery.пользовательский интерфейс.функция автозаполнения.в 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;

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

мой код такой (завернутый в документ.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, чтобы выбрать itme, затем введите, и ничего не происходит!

3 ответов


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


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

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

от поиск по щелчку с автозаполнением Jquery


этот параметр? set
автофокус: правда

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