Fancybox - кнопка ASP.NET не работает - PullRequest
21 голосов
/ 22 апреля 2010

Я только что определил с помощью Firebug, что при создании окна Fancybox оно фактически берет все мои элементы управления ASP.NET (содержащиеся в теге DIV) и помещает их вне тега FORM. Поэтому я полагаю, что это причина, по которой кнопка ASP.NET ничего не делает - она ​​находится вне формы.

Итак, есть ли у вас какие-либо предложения, как я могу предотвратить это (или заставить эту кнопку ASP.NET работать), кроме использования совершенно другого модального диалога?

РЕДАКТИРОВАТЬ: ОК, люди сообщают, что некоторые из предложенных исправлений работают для них на определенных версиях. Поэтому обязательно прочитайте все ответы / прокрутите вниз, чтобы узнать, как решить эту проблему в разных версиях Fancybox.

Ответы [ 14 ]

0 голосов
/ 31 марта 2017

Вам не нужно менять код или библиотеку ... Просто попробуйте это ..

$('.fancybox').fancybox({
     parent: "form:first", // jQuery selector
});
0 голосов
/ 17 апреля 2015

Без каких-либо изменений в файле библиотеки fancybox js, что работает для меня, было ниже,

$('.your-selector').fancybox({ 
        afterShow: function () {
            $('.fancybox-overlay').appendTo('form');
        }
});

Я переместил тег fancybox внутри тега формы, и теперь кнопка на стороне сервера работает как чудо :) Всего наилучшего .. Надеюсь, это сработает и для вас. .:)

0 голосов
/ 14 августа 2013

Если обновление родительского объекта является решением, которое служит цели, вы можете обновить его при закрытом:

$(".fancybox").fancybox({
  'onClosed': function() {
   parent.location.reload(true);
  } 
});
0 голосов
/ 03 января 2013

Fancybox 1.3.4 фактически выполняет обратную передачу.

Но если он закрыт в OnClientClick, который находится перед событием щелчка на стороне сервера, он не выполнит обратную передачу. Так что вышеописанное является решением этой проблемы (добавление doPostBack в функцию javascript).

Обычно Fancybox 1.3.4 выполняет обратную передачу без каких-либо изменений в своих файлах .Js. Но чтобы закрыть его, нужно написать эту строку ScriptManager.RegisterClientScriptBlock(this, GetType(), "", "parent.$.fancybox.close();", true); в событии щелчка на стороне сервера. Только тогда вызывается оба серверных события, и fancybox также закрывается.

Но Fancybox 2.1.3 (последний) делает событие обратной передачи после его закрытия в OnClientClick.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...