ui.dialog - возвращает значение обратно в диалог, чтобы его открытые методы работали
Проведя несколько дней в поисках решений здесь и в других местах в сети, кажется, что задание моего вопроса напрямую стало моей последней и единственной возможностью. Мой сайт полностью основан на AJAX; У меня есть функции, которые создают и загружают удаленный контент в лайтбоксы, подсказки, iframes (ACD) и т.д...
Там, где требуется загрузка форм, я решил использовать ui.dialog, чтобы представить капчу ajaxForm в качестве первого шага; который также вызывает внутренний скрипт для проверки RBL на удаленном хосте.
Так что, если проверка RBL очищается и капча верна, у меня ajaxForm.postResponse заполняет сообщение в диалоговом окне. Теперь сама ajaxForm может (если все в порядке) закрыть диалог и открыть новый модал; но это отняло бы контроль над процессом у вызывающей стороны и потребовало бы, чтобы ajaxForm знал о намерениях вызывающей стороны (какой контент и в каком режиме - tip,lightbox,...). Я просто хочу, чтобы форма капчи выполняла тест и возвращала двоичное значение, которое оно может передать вызывающей стороне.
Есть ли способ для вызываемого абонента сказать вызывающему абоненту (экземпляру диалогового окна), чтобы он мог затем продолжить загрузку фактической формы, для которой он предназначен. Например, jQuery.facebox({ ajax: someUrl });
Диалог должен быть в состоянии обработать некоторое возвращаемое значение из ajaxForm. Я смотрел на публичные методы ui.dialog в опциях, я смотрел на опции расширения, я смотрел на параметры, связанные с кнопками (e, ui). Все безрезультатно.
После поисков в сети я еще не нашел никого, кто опубликовал способ передать диалогу возвращаемое значение, на которое он может воздействовать (в b4close, или close, или в любом месте FTM)
Просто в этот AM я понял, что, может быть, я мог бы быть умным и сделать так, чтобы ajaxForm.postResponse вставил что-то в диалог, который по завершении диалог мог бы проверить (скажем, изображение OK). Таким образом, диалог будет воздействовать на содержимое разметки вместо фактического возвращаемого значения. Что за клудж.
Кто-нибудь знает способ передачи значения обратно в диалог после его создания? Я обнаружил, что $("#myDialog).data можно" увидеть "с помощью $("#myDialog).dialog, поэтому будет ли вектор данных возможным решением? Установите myDialog.data('retVal', 'false'), а затем заставьте postResponse изменить его на true, если все в порядке, и разрешите диалоговому окну затем протестировать эту переменную в close()/beforClose()?
Или как насчет $( '#myDialog').dialog( 'option', 'retVal', false); Может ли ajaxForm.postResponse изменить эту опцию после создания диалога.
Есть ли другие способы сделать это? ТИА
1 ответ
Отвечая на мой собственный вопрос - вы можете использовать вектор.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') }); } });
Удивленный, я не нашел упоминания об этом нигде в сети. Вероятно, потому что большинство людей используют пользовательский интерфейс более сложными способами.
Во всяком случае, у вас есть и есть