Короткий ответ, кажется, игнорирует его, когда у вас есть 1 элемент в списке для выбора.
Пример:
https://jsfiddle.net/Twisty/6oa0yg24/2/
$(function() {
var items = [{
value: 1,
label: 'neo'
},
{
value: 2,
label: 'trinity'
},
{
value: 3,
label: 'morpheus'
},
{
value: null,
label: 'smith'
},
{
value: undefined,
label: 'switch'
},
{
value: "",
label: 'tank'
}
];
$("#autocomplete").autocomplete({
source: items,
select: function(e, ui) {
console.log(ui.item.value);
}
});
});
Если мы введем t
, мы получим несколько совпадений и выберем smith
, значение останется пустым. Если мы введем sm
, и теперь единственная опция - smith
, тогда в качестве значения добавляется «кузнец». Почему? Я не знаю, но я протестировал все три сценария ios, и каждый делает это. Я уверен, что все сводится к этим строкам (5864 - 5869 в https://code.jquery.com/ui/1.12.1/jquery-ui.js):
// reset the term after the select event
// this allows custom select handling to work properly
this.term = this._value();
this.close( event );
this.selectedItem = item;
Я подозреваю, что вы можете перезаписать его с помощью Widget Factory, если вы так склонны.