Ваш вопрос также является распространенным запросом на форуме плагинов jQuery и в Как реализовать «mustMatch» и «selectFirst» в jQuery UI Autocomplete люди обсуждали эту проблему.
Принятый ответ на этот вопрос работает. Так что решение Док Хоффэйд действительно заслуживает репутации.
В качестве альтернативы вы можете использовать автозаполнение Йорна Зафферера с опцией " mustMatch ".
<script type="text/javascript">
$(document).ready(function(){
var availableTags = ["csharp", "java", "python"];
$("#tags").autocomplete(availableTags, {
mustMatch: true
});
});
</script>
<input id="tags" />
UPDATE
Изначально я упустил, что вы хотели использовать комбинированный список. Спасибо за разъяснение.
Я настроил пример со списком.
Мне нужно было сделать несколько изменений, чтобы они действительно работали в форме. Я ввел небольшую задержку, чтобы события происходили в правильном порядке. Кроме этого я вставил решение Дока Хоффидай.
Я использовал событие «change», но вы также можете получить что-то работающее, используя событие «close». Мне неприятно это говорить, но мой опыт работы с новым автозаполнением пользовательского интерфейса jQuery заключается в том, что он немного ненадежен. Вещи, кажется, портятся, когда у вас настроено более одного типа обратного вызова событий.
ОБНОВЛЕНИЕ 2
Я добавил новый пользовательский селектор на основе решения Дока Хоффидай, чтобы введенный текст не перезаписывался, когда он соответствует началу действительной опции. Я также обновил его, чтобы источник ограничивал предлагаемые варианты более точными совпадениями. Я надеюсь, что это ближе к вашим требованиям.
Я поправил свой предыдущий пример со списком.