jquery fancybox - предотвращать закрытие по клику за пределами fancybox - PullRequest
11 голосов
/ 01 сентября 2009

Я использую плагин Fancybox для моих модальных окон. Кажется, что независимо от того, какие параметры я использую, я не могу предотвратить закрытие модального окна fancybox, когда пользователь щелкает за пределами модального окна fancybox (затененная область).

Есть ли способ заставить пользователя нажать X или кнопку, при которой я запускаю событие закрытия? Похоже, все должно быть просто, поэтому я надеюсь, что просто неправильно читаю примеры.

Я пытался hideOnContentClick: false, но это, похоже, не работает для меня. Есть идеи?

Ответы [ 15 ]

1 голос
/ 15 января 2014

Вы можете предотвратить закрытие причудливой коробки, применив эти настройки

 'showCloseButton'=>false, // hide close button from fancybox
 'hideOnOverlayClick'=>false, // outside of fancybox click disabled
 'enableEscapeButton'=>false, // disable close on escape key press

получить настройки fancybox по следующей ссылке

http://www.fancybox.net/api

1 голос
/ 22 декабря 2009

Просто добавьте следующую строку в вашу функцию, вам не нужно ничего менять в jquery.fancybox-1.2.6.js

callbackOnStart : function() {$("#fancy_overlay").bind("click","null");},
0 голосов
/ 17 ноября 2014

Вы можете установить значение по умолчанию closeClick на оверлее на false. Работало у меня в версии 2.1.5.

$.fancybox.helpers.overlay.defaults.closeClick=false;
0 голосов
/ 16 октября 2013

Просто используйте следующий код:

$(document).ready(function() {
  $("a#Mypopup").fancybox({
        "hideOnOverlayClick" : false, // prevents closing clicking OUTSIE fancybox
        "hideOnContentClick" : false, // prevents closing clicking INSIDE fancybox
        "enableEscapeButton" : false  // prevents closing pressing ESCAPE key
  });
  $("a#Mypopup").trigger('click');
});

<a id="Mypopup" href="images/popup.png"><img alt="Mypopup" src="images/popup.png" /></a>
0 голосов
/ 03 апреля 2013

Мне пришлось использовать комбинацию всех вышеперечисленных ответов, так как все они содержат ошибки. Разумеется, редактирование исходного кода не требуется.

В моем случае я хотел отключить щелчки наложений, закрывающие окно, поскольку у меня была последовательность вопросов, которые будут последовательно отображаться внутри fancybox, поэтому я не хотел, чтобы пользователи теряли свой прогресс, случайно щелкнув по наложению, но хотел сохранить эту функциональность в другом месте на странице.

Используйте это, чтобы отключить его:

$(".fancybox-overlay").unbind();

Используйте это, чтобы снова включить:

$(".fancybox-overlay").bind("click", $.fancybox.close);
...