изменение поведения автозаполнения jquery

#jquery #jquery-ui-autocomplete

#jquery #jquery-пользовательский интерфейс-автозаполнение

Вопрос:

Наконец-то у меня заработали некоторые автозаполнения, но есть одно поведение, которое я хотел бы изменить. Если пользователь вводит частичное значение и щелкает в любом месте за пределами возвращаемого списка, частичное значение устанавливается во входных данных. Я бы предпочел, чтобы значение оставалось пустым, если пользователь не выбирает один из возвращаемых параметров.

Похоже, что событие фокусировки — это то, что я должен изменить, но я нахожу API запутанным… в нем говорится:

 Before focus is moved to an item (not selecting), ui.item refers to the focused 
item. The default action of focus is to replace the text field's value with the 
value of the focused item, though only if the focus event was triggered by a 
keyboard interaction. Canceling this event prevents the value from being updated,
but does not prevent the menu item from being focused.
  

но это не дает примера того, как отменить событие.

Ответ №1:

Нашел ответ в другом вопросе 🙂 изменение события изменения таким образом, похоже, делает свое дело:

 $('#myID').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: "cfc/autoSuggest.cfc?method=someMethodamp;returnformat=json",
                    dataType: "json",
                    data: {
                      search: request.term,
                      maxRows: 20
                    },
                    success: function(data) {
                      response(data);
                    }                   
                })
            },
            change: function(event, ui) {     
                if (!ui.item) {
                    $(this).val('');
                }
            }
        });