Пользовательский интерфейс JQuery – как связать событие изменения с полем со списком?

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

Код, который не работает:

$('#select').combobox();
...
$('#select').bind( "autocompletechange", function(event, ui) {
  alert('changed');
});

Я предполагаю, что метка события неверна, поскольку встроенная метка в поле со списком «выбрана», например. $('#select').combobox({selected : function(ev,ui) { alert('selected'); }}); работает, но я не могу использовать его таким образом.

Итак, есть идеи, как правильно назвать событие? Я просто не могу найти его в документации.

РЕДАКТИРОВАТЬ: На самом деле я нашел, где была моя проблема. $('#select').combobox(); просто сопоставляет выбор с вводом автозаполнения. Создаваемый им ввод имеет идентификатор, например id='select-autocomplete', поэтому для привязки и события к этому полю со списком - селектор должен быть на этом входе, а не на выборе. Итак, рабочий код:

$('#select').combobox();
    ...
$('#select-autocomplete').bind( "autocompletechange", function(event, ui) {
    alert('changed');
});

person Lothar    schedule 11.08.2011    source источник
comment
В чем проблема, с которой вы столкнулись? По сути, событие autocompletechange должно срабатывать, когда поле размыто. (Теряет фокус) Вы не видите предупреждения, если фокусируетесь на другом поле?   -  person evasilchenko    schedule 11.08.2011


Ответы (1)


Итак, я нашел более четкое решение, чем привязка события к созданному .ui-combobox-input. Вы должны найти в коде выпадающего списка место, где инициализируется ввод, и найти параметр выбора. Внесите изменения в эту часть кода:

select: function( event, ui ) {
    ui.item.option.selected = true;
    that._trigger( "selected", event, {
        item: ui.item.option
    });
    that.element.trigger('change');// here is the trick
},
person Pavel K    schedule 03.01.2013
comment
Просто для ссылки: аналогичный ответ с небольшим объяснением можно найти здесь. - person Griddo; 22.01.2014