Potencjalnie prosty problem z autouzupełnianiem interfejsu jQuery powoduje wstrząs. Moje źródło jestFunkcja autouzupełniania interfejsu jQuery pokazuje wartość zamiast etykiety w polu wejściowym
var ac = [
{
label: "One Thing",
value: "One-Thing"
},
{
label: "Two Thing",
value: "Two-Thing"
},
]
jestem powołując widget z
$(function() {
$("#search").autocomplete({
source: PK.getAutocompleteSource(),
focus: function(event, ui) {
$("#search").val(ui.item.label);
return false;
},
select: function(event, ui) {
$("#search").val(ui.item.label);
PK.render(ui.item.value);
}
});
});
wszystko działa dobrze. Kiedy wpisuję pole wejściowe #search
, pasująca etykieta pojawia się w menu rozwijanym, a kiedy I select
jest wykonywane prawidłowe wyszukiwanie. Widżet pokazuje nawet pole wejściowe label
w polu wejściowym , gdy zaznaczam różne elementy w liście rozwijanej za pomocą klawiszy strzałek (lub myszy). Z wyjątkiem tego, że zaraz po naciśnięciu klawisza Enter widżet wypełnia pole wejściowe #search
za pomocą value
zamiast label
. Tak więc pole pokazuje One-Thing zamiast Jedna rzecz.
Jak mogę to poprawić? Z pewnością oczekuję bardziej rozsądnego zachowania, nie?
Dzięki, 'event.preventDefault();' wystarczyły. Poważnie, powinno to być w dokumentach. – punkish
Po wybraniu klawiszy strzałek zdarzenie nie jest wyzwalane ... – dpp
@dpp wywołanie zwrotne 'focus' (w pytaniu oryginalnym) zwróciło wartość false, co jest kolejnym sposobem na pominięcie domyślnego zachowania przy użyciu klawiszy strzałek użycia "wartość", a nie "etykieta". po wybraniu pozycji z listy, niezależnie od sposobu, wywołuje ona wywołanie 'select' i tam, gdzie chcesz użyć' preventDefault() 'lub' return false', aby pominąć domyślne zachowanie –