Суть задачи:
Есть текстовое поле с autocomplete_path и мне надо в скрипте использовать и заменить присылаемое туда значение.
Код примерно такой:
$('input#id-текстового-поля-с-autocomplete', context).change(function (event) {
event.target.value = event.target.value + myData.value;
});
};
Если просто что-то ввести, игнорируя autocomplete, то все срабатывает нормально - myData.value присоединяется к значению в поле. Если же выбрать из выпадающего списка, то в поле попадает значение присланное по autocomplete_path, а myData.value не присоединяются.
Не очень разбираюсь в JQuery, потому и прошу помощи.
Комментарии
Вам проще изменить саму логику autocomplete. Зачем еще один обработчик, если можно сразу вернуть значение в нужной разметке? Например выделить тегом strong точное вхождение, ну или любая другая логика.
Autocomplete посылает данные в виде ключ-значение. Значения эндюзер видит в выпадающем списке, ключ вставляется в поле при выборе. Мне нужен этот ключ, надо через него кое что сделать на странице, в частности изменить то, что стоит в самом поле.
А,я понял. Вам нужно добавить свой функционал уже на клиенте, когда юзер выбирает значение из тех, которые ему предлагает autocomplete. попробуйте в своем скрипте переопределить Drupal.jsAC.prototype.select как-то так:
Drupal.jsAC.prototype.select = function (node) {
//тут проводите свои операции
this.input.value = node.autocompleteValue;
};
}
Все бы хорошо, только мой JS загружается ДО autocomplete.js
Спасибо boneg, враг повержен. Засунул drupal_add_js в функцию theme для своего элемента формы. Скрипт подгружается сразу перед скриптами темы.
И еще, Drupal.jsAC.prototype.select срабатывает только на клик мышью по списку. Также надо перекрывать Drupal.jsAC.prototype.hidePopup
Как-то не очень логично назвали. Любой подумает, что Drupal.jsAC.prototype.hidePopup представляет из себя просто исчезание попапа autocomplete, а в нем как оказалось описаны события клавиатуры в попапе. Халтура, ептить ))
Не без этого...