Проводка, чтобы ответить на мой собственный вопрос:JQuery-UI автозаполнения предотвратить Язычок Основное внимание
У меня есть следующие HTML:
<select id="genre-select">
<option value="-1">Make a selection</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<input id="band-input" type="text" />
<button id="go-button">Go</button>
<button>Unrelated Button</button>
Я использую JQuery-UI объект автозаполнения и мой оригинальный JavaScript смотрел что-то как:
var bandValue = "-1";
var $genreSelect = $("#genre-select");
var $bandInput = $("#band-input");
var $goButton = $("#go-button");
var bands = [
{
value: "1",
label: "AC/DC",
desc: "..."
},
{
value: "2",
label: "Black Sabbath",
desc: "Ozzy Osbourne, Tony Iommi, Bill Ward, etc."
},
{
value: "3",
label: "Cars, The",
desc: "..."
}
];
$bandInput.autocomplete({
source: bands,
focus: function(event, ui) {
$bandInput.val(ui.item.label);
return false;
},
select: function(event, ui) {
console.log("select event");
bandValue = ui.item.value;
$bandInput.val(ui.item.label);
return false;
}
});
Он работал, однако при использовании навигации с помощью клавиатуры и нажать TAB, фокус будет прыгать на «Несвязанный Баттон» вместо кнопки, предназначенного «Go». Я попытался проглотить все нажатия клавиш и нажать события и полностью контролировать, когда $ goButton получает фокус, ничего не работает.