ui.dialog - возвращает значение обратно в диалог, чтобы его открытые методы работали - PullRequest
0 голосов
/ 03 апреля 2011

Проведя несколько дней в поисках решений здесь и в других местах в сети, похоже, что задание моего вопроса напрямую стало моей последней и единственной возможностью.Мой сайт полностью основан на AJAX;У меня есть функции, которые создают и загружают удаленный контент в лайтбоксы, подсказки, iframes (ACD) и т. Д. ...

Там, где требуется загрузка форм, я решил использовать ui.dialog, чтобы представить Captcha ajaxForm как1-й шаг;который также вызывает внутренний скрипт для проверки RBL на удаленном хосте.

Так что, если проверка RBL сбрасывается и капча правильная, у меня есть ajaxForm.postResponse, чтобы заполнить сообщение в диалоговом окне.Теперь сама ajaxForm может (если все в порядке) закрыть диалог и открыть новый модал;но это отняло бы контроль над процессом у вызывающей стороны и потребовало бы, чтобы ajaxForm знал о намерениях вызывающей стороны (какой контент и в каком режиме - tip, lightbox, ...).Я просто хочу, чтобы форма капчи выполнила тест и возвратила двоичное значение, которое она может передать вызывающему.

Есть ли способ для вызывающего абонента сказать вызывающему (экземпляр диалога), чтобы он могзатем продолжайте загружать актуальную форму, для которой она предназначена.Например, jQuery.facebox ({ajax: someUrl});

Диалог должен быть в состоянии обработать некоторое возвращаемое значение из ajaxForm.Я смотрел на публичные методы ui.dialog в опциях, я смотрел на опции расширения, я смотрел на параметры, связанные с кнопками (e, ui).Все безрезультатно.
После поиска в сети мне еще не удалось найти никого, кто опубликовал способ передать диалогу возвращаемое значение, на которое он может воздействовать (в b4close, или close, или в любом месте FTM)

Только в этот час я понял, что, может быть, я мог бы быть умным, и чтобы ajaxForm.postResponse вставил в диалог что-то, что по завершении диалоговое окно может проверить (скажем, изображение OK).Таким образом, диалог будет воздействовать на содержимое разметки вместо фактического возвращаемого значения.Что за клудж.

Кто-нибудь знает способ передачи значения обратно в диалог после его создания?Я обнаружил, что $ ("# myDialog) .data можно" увидеть "с помощью $ (" # myDialog) .dialog, поэтому возможен ли вектор данных?Установите myDialog.data ('retVal', 'false'), а затем заставьте postResponse изменить его на true, если все в порядке, и разрешите диалоговому окну затем проверить эту переменную в close () / beforClose ()?

Или как насчет$ ('#myDialog') .dialog ('option', 'retVal', false);Может ли ajaxForm.postResponse изменить эту опцию после создания диалога.

Есть ли другие способы сделать это?TIA

1 Ответ

0 голосов
/ 05 апреля 2011

отвечая на мой собственный вопрос - вы можете использовать вектор .data для передачи информации между экземпляром диалога и формой или чем-либо еще в вызываемом объекте.Работает довольно красиво.До сих пор не знаю, если это лучший подход, но он работает.Например, в dialog.config var dest = './Contact/contact-form.info.php';var url = this.href;var myDialog = $ ('# dialog');myDialog.data ('retVal', 'false');myDialog.data ('dest', dest);

если все идет хорошо в postResponse ajaxForm, тогда установите $ ('# dialog'). Data ('retVal', true);и в dialog.beforeClose () проверить значение и действовать соответственно beforeclose: function (event, ui) if ($ (this) .data ('retVal')) {jQuery.facebox ({ajax: $ (this) .data ('dest')});}});

Удивлен, я нигде не нашел упоминания об этом в сети.Возможно, потому что большинство людей используют ui-диалог более сложными способами.

Во всяком случае, у вас это есть, и там оно

...