Я использовал 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, чтобы выбрать его, затем ввести, и ничего не происходит!