Как поймать значение в autocomplete_path [Решено]

Главные вкладки

Аватар пользователя direqtor direqtor 22 января 2012 в 12:56

Суть задачи:
Есть текстовое поле с autocomplete_path и мне надо в скрипте использовать и заменить присылаемое туда значение.
Код примерно такой:

Drupal.behaviors.myModuleBehavior = function(context) {
  $('input#id-текстового-поля-с-autocomplete', context).change(function (event) {
     event.target.value = event.target.value + myData.value;
  });
};

Если просто что-то ввести, игнорируя autocomplete, то все срабатывает нормально - myData.value присоединяется к значению в поле. Если же выбрать из выпадающего списка, то в поле попадает значение присланное по autocomplete_path, а myData.value не присоединяются.

Не очень разбираюсь в JQuery, потому и прошу помощи.

Комментарии

Аватар пользователя boneg boneg 22 января 2012 в 17:57

Вам проще изменить саму логику autocomplete. Зачем еще один обработчик, если можно сразу вернуть значение в нужной разметке? Например выделить тегом strong точное вхождение, ну или любая другая логика.

Аватар пользователя direqtor direqtor 22 января 2012 в 18:45

Autocomplete посылает данные в виде ключ-значение. Значения эндюзер видит в выпадающем списке, ключ вставляется в поле при выборе. Мне нужен этот ключ, надо через него кое что сделать на странице, в частности изменить то, что стоит в самом поле.

Аватар пользователя boneg boneg 22 января 2012 в 20:34

А,я понял. Вам нужно добавить свой функционал уже на клиенте, когда юзер выбирает значение из тех, которые ему предлагает autocomplete. попробуйте в своем скрипте переопределить Drupal.jsAC.prototype.select как-то так:

if(Drupal.jsAC){
Drupal.jsAC.prototype.select = function (node) {
//тут проводите свои операции
this.input.value = node.autocompleteValue;
};
}
Аватар пользователя direqtor direqtor 23 января 2012 в 4:46

Спасибо boneg, враг повержен. Засунул drupal_add_js в функцию theme для своего элемента формы. Скрипт подгружается сразу перед скриптами темы.
И еще, Drupal.jsAC.prototype.select срабатывает только на клик мышью по списку. Также надо перекрывать Drupal.jsAC.prototype.hidePopup

Аватар пользователя boneg boneg 26 января 2012 в 10:44

"direqtor" wrote:
Также надо перекрывать Drupal.jsAC.prototype.hidePopup

Как-то не очень логично назвали. Любой подумает, что Drupal.jsAC.prototype.hidePopup представляет из себя просто исчезание попапа autocomplete, а в нем как оказалось описаны события клавиатуры в попапе. Халтура, ептить ))