Когда вы создаете ссылку в drupal как диалог с классом 'use-ajax', Drupal init ajax ссылка при загрузке страницы.
я хочу изменить URL для запроса ajax, чтобы изменить дату слота
Пример ниже работает (между for (var j в Drupal.ajax) {), но мне нужен лучший способ кода.
Я использую модуль fullcalendar_view и меняю код модуля, fullcalendar уже создает ссылку для $ ('# calendar-add-event'), я просто использую тот же href, а затем хочу изменить его на $ (' # calendar-add-event2 ') и следующий щелчок триггера.
fullcalendar.html.twing
<div class="fullcalendar-bottom-btn add-event-btn">
<a id="calendar-add-event" href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-renderer="off_canvas" data-dialog-options="{"width":400}">{{ 'Add event'|t }}</a>
<a id="calendar-add-event2" href="{{ language }}fullcalendar-view-event-add?entity={{ entity_id }}&bundle={{ options.bundle_type }}&start_field={{ options.start }}&end_field={{ options.end }}&destination={{ path('<current>') }}" class="use-ajax" data-dialog-type="dialog" data-dialog-options="{"width":400}">{{ 'Add event triger'|t }}</a>
</div>
fullcalendar_view.js
$("#calendar").dblclick(function () {
if (slotDate && drupalSettings.eventBundleType && drupalSettings.dblClickToCreate && drupalSettings.addForm !== '') {
var date = slotDate.format();
href = $('#calendar-add-event').attr('href');
resHref = href.split('?');
ajaxLink = resHref[0] + '?start=' + date + '&' + resHref[1];
$('#calendar-add-event2').attr('href', ajaxLink);
for (var j in Drupal.ajax) {
if (j == 'instances') {
for (var t in Drupal.ajax[j]) {
try {
if (Drupal.ajax[j][t].selector == '#calendar-add-event2') {
// console.log(Drupal.ajax[j][t]);
// console.log(t);
// console.log(Drupal.ajax[j][t]);
Drupal.ajax[j][t].options.url = ajaxLink + '&_wrapper_format=drupal_dialog';
}
} catch (err) {
console.log(Drupal.ajax[j]);
}
}
}
}
$('#calendar-add-event2').trigger('click');
$('body').prepend("<div id='child-div'></div>");
}
});