Добрый день.
Навесил на селект вне формы ajax-обработчик (через ajax framework). Все работает, но при изменении селекта ajax выполняется несколько раз подряд. Более того, когда первый раз выбираешь селект, запрос выполняется один раз. Когда выбираешь второй раз - запрос выполняется 2 раза. Когда выбираешь третий раз - запрос выполняется 4 раза, когда четвертый раз - 8 раз выполняется.
Подскажите, пожалуйста, в чем может быть проблема.
Комментарии
Похоже они размножаются..
Почкованием врядли..
Скорее всего делением..
Для серьезного ответа недостаточно данных.
код выложите.
http://drupal-learning.com/blog/drupalbehaviors-vs-documentready-v-drupal-7
Дык сколько раз твердили миру. Навешивать через jquery.once();
После того, как выполняется callback на ваш AJAX запрос, обработчик на ваш селект навешивается еще один раз. И т.д. Поэтому нужно использовать конструкции вида
$('selector').once().change(function(){
Ваш AJAX вызов.
});
Передавайте context в бихейворе
Насколько я понял, то, что внутри jquery.once выполняется один раз. При каждом изменении селекта на странице мне внутрь jquery.once нужно передавать текущее значение этого селекта. Это можно как-то реализовать?
jQuery('select.choose-currency', context).once('ajax', function () {
var base = 'select#edit-price';
Drupal.ajax[base] = new Drupal.ajax(base, this, {
event: 'change',
url: Drupal.settings.basePath + '/changepriceselect?currency=' + jQuery(this),
});
});
jQuery(this) - все время одно и то же значение, то, которые было при загрузке страницы.