Отказ от ответственности : Это будет работать только в современных браузерах с поддержкой input.setSelectionRange
. Если вам нужно решение для старых браузеров, вам нужно найти кросс-браузерное решение.
Во всяком случае, вот как я бы подошел к этому:
$(document).ready(function() {
$("#auto").autocomplete({
source: function(request, response) {
/* autofill: */
/* If using AJAX, place your AJAX request here */
var results = $.ui.autocomplete.filter(src, request.term)
, el = this.element[0];
if (results.length) {
el.value = results[0];
/* This will not work < IE9 */
el.setSelectionRange(request.term.length, el.value.length);
}
response(results);
},
change: function (event, ui) {
/* mustmatch: */
if (!ui.item) {
this.value = '';
}
}
});
});
Пример: http://jsfiddle.net/SgxyT/
Как видите, mustmatch
намного проще реализовать. Все, что вам нужно сделать, это вернуть введенное значение, если оно не было выбрано в раскрывающемся списке.
С другой стороны, autofill
потребует от вас использования функции в качестве source
для автозаполнения, определения результатов и установки выбора на входе.