Создал поле(field) которое состоит из 3 полей: 2 скрытые и 1 textfield, добавил к ним id, прописал к нему путь для .js файла, в котором находится JQuery Autocomplete с созданными виджетами(их 2 - один показывается, когда значения есть, другой показывается, когда значений нет и при нажатии создаёт термин), поля подключены к FieldCollection. Всё работает, всё очень классно. Но при добавлении новых групп полей FieldCollection, JQuery остаётся обрабатывать самые первые поля, игнорируя новые (т.к. поменялся класс), перекидывая данные вводимые во 2, 3, 4, 5 поле на первое. На форуме подсказали, что нужно работать с .once(), и вот я уже 4 дня сижу и пытаюсь подкинуть в него свой код, но либо ничего не происходит, либо jquery вообще перестаёт работать. Вот код:
Drupal.behaviors.jqe = {
attach: function (context, settings) {
$('#fields-nazvaniye').once(function () {
$("#fields-nazvaniye", context).makeJqeAutocomplete();
});
}// attach
};
// Селект внутри makeJqeAutocomplete
select: function(event, ui) {
// nid скрытому полю.
$('#fields_href').val(ui.item ? ui.item.value.href : 0);
// текст - в поле.
$input.val(ui.item ? ui.item.value.title : this.value);
$('#fields_class').val(ui.item ? ui.item.value.class : '');
return false;
}
});
return this;
};
ПОМОГИТЕ, ПОЖАЛУЙСТА!
Комментарии
не осилил много букв, Вы бы еще исходники jQuery и Drupal.ajax выложили, лень читать что там у Вас, суть у $.once примерно следующая - $(".class-name").once("my-processed",some_func) сделает то же самое, что и $(".class-name:not(.my-processed)").addClass("my-processed").each(some_func); только чуть медленнее, за то удобнее.
Ага, а в качестве селектора подойдёт id? И ещё: куда вставлять .once на обработчике в select или прописывать его в Drupal.behaviors?
Даже читать не буду в коробке друпал по once = полно примеров
Я смотрел эти примеры и делаю всё по ним, но ничего не получается, опять:
attach: function (context, settings) {
$('.fields-nazvaniye').once('demo-fields', function () {
$(".fields-nazvaniye", context).makeJqeAutocomplete();
});
}// attach
};
Или в select запихивал - тоже ничего не происходит:
// nid скрытому полю.
$('.fields_href').once('demo', function () {
$('.fields_href').val(ui.item ? ui.item.value.href : 0);
});
// текст - в поле.
$('.fields_nazvaniye').once('demo', function () {
$('.fields-nazvaniye').val(ui.item ? ui.item.value.title : this.value);
});
$('.fields_class').once('demo', function () {
$('.fields_class').val(ui.item ? ui.item.value.class : '');
});
return false;
- значения как подставлялись не туда (в филдсетах коллекции полей) так и подставляются. Да и в интернете решение проблемы не могу найти
Если не поможет, то отлавливать событие изменения DOM и вешаться на него.
Не помогло. А как отловить?
Попробуй
http://help.dottoro.com/ljmcxjla.php