Как закрыть ajaxform в fancybox+iframe
После отправки сообщения нужно закрыть fancybox с ajaxform, как это сделать? форма выведена через iframe:
<a class="btn btn-primary" data-fancybox="" data-iframe="{"preload":false}" data-small-btn="true" data-title="тест кнопки" data-type="iframe" href="[[~17]]">Click me</a>
пытался запускать скрип и со страницы и с фрейма, но безуспешно(($(document).on('af_complete', function(event, response) {
var form = response.form;
if (response.success) {
$.fancybox.close();
}
});
Комментарии: 18
Привет! В консоли браузера есть ошибки? Навскидку — описанный скрипт подключается до подключения jquery
а где должен подключаться скрипт? на ifram'e или на странице?
ошибок нет
ошибок нет
На странице
не выходит((
Дайте ссылку
а как связаться? ссылки вроде как нельзя размещать)
я бы в лс скинул, скайп или еще чтото?
я бы в лс скинул, скайп или еще чтото?
Пишите в личку
Вместо
$.fancybox.close();
попробуйте просто произвести клик по элементу который отвечает за закрытие.
$('.какой-то класс элемента крестика').click();
$.fancybox.close();
попробуйте просто произвести клик по элементу который отвечает за закрытие.
$('.какой-то класс элемента крестика').click();
мне не подойдет такое) это получается форма отправлена, пришло уведомление о успешной отправке в jgrowl и форма осталась на глазах без изменений(( если бы хотя бы текст появился о том что форма отправлена — то да
Или я вас не понимаю или вы меня.
Этот код отслеживает событие которое создает ajax_form
Если передано значение true в response.success (данные успешно отправлены) то произойдет клик по «крестику» модального окна, оно закроется а пользователь увидит уведомление от jgrowl
и форма осталась на глазах без измененийПочему форма останется без изменений?
Этот код отслеживает событие которое создает ajax_form
Если передано значение true в response.success (данные успешно отправлены) то произойдет клик по «крестику» модального окна, оно закроется а пользователь увидит уведомление от jgrowl
я недопонял на момент написания ответа, да я попытался это сделать — но не получается форма не закрывается
<script>
$(document).ready(function() {
AjaxForm.Message.success = function() {};
});
$(document).on('af_complete', function(event, response) {
var form = response.form;
if (response.success) {
$('.fancybox-close-small').click();
$.fancybox('<h1>' + response.message + '</h1>');
}
});
</script>
проверено много десятков раз — это работает.
Внимательно смотрите ошибки в консоли браузера.
Внимательно смотрите ошибки в консоли браузера.
в консоли нет ошибок
Значит Алексей ниже написал очень правильную мысль. Я вот лично впервые вижу чтобы форму грузили в fancybox через iframe, скорее всего причина в этом.
закиньте этот код в чанк с формой
Тут проблема в том, что форма через фрейм грузится. И скрипт на странице ее просто не видит. И не ловит событие af_complete
window.parent.$('.fancybox-close-small').click();
мб кому-то пригодится — рабочая тема
мб кому-то пригодится — рабочая тема
Интересно! Получается, что работает, так как в пределах одного домена браузеры позволяют
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.