Потенциально простая проблема с автозаполнением jQuery UI превзошла меня. Мой источникjQuery UI autocomplete показывает значение вместо метки в поле ввода
var ac = [
{
label: "One Thing",
value: "One-Thing"
},
{
label: "Two Thing",
value: "Two-Thing"
},
]
Я вызова виджета с
$(function() {
$("#search").autocomplete({
source: PK.getAutocompleteSource(),
focus: function(event, ui) {
$("#search").val(ui.item.label);
return false;
},
select: function(event, ui) {
$("#search").val(ui.item.label);
PK.render(ui.item.value);
}
});
});
Все работает отлично. Когда я ввожу в поле ввода #search
, соответствующая метка отображается в раскрывающемся списке, а когда I select
выполняется правильный поиск. Виджет даже показывает label
в поле ввода #search
, так как я выбираю разные элементы в раскрывающемся меню, используя клавиши со стрелками (или мышь). Кроме того, как только я нажму на ввод, виджет заполнит поле ввода #search
с помощью value
вместо label
. Таким образом, поле показывает One-Thing вместо One Thing.
Как это исправить? Наверняка, что я ожидаю, это более разумное поведение, нет?
Спасибо, 'event.preventDefault();' сделал трюк. Серьезно, это должно быть в документах. – punkish
Когда вы используете клавиши со стрелками для выбора, событие не запускается ... – dpp
@dpp Обратный вызов 'focus' (в исходном вопросе) возвращает false, что является другим способом пропускать поведение по умолчанию при использовании клавиш со стрелками для использования «значение», а не «метка». как только элемент выбран из списка, независимо от того, как он вызывает обратный вызов 'select', и там, где вы хотите либо использовать' preventDefault() ', либо' return false', чтобы пропустить поведение по умолчанию –