ui.dialog - 将值返回到对话框以使其公共方法起作用

时间:2011-04-03 18:57:43

标签: jquery-ui-dialog

在这里和网上的其他地方花了几天时间浏览解决方案之后,似乎直接问我的问题已成为我的最后也是唯一的选择。 我的网站都是ajax驱动的;我有funcs在灯箱,cluetips,iframes(ACD)等创建和加载远程内容......

如果需要加载表单,我决定使用ui.dialog公开Captcha ajaxForm作为第一步;它还调用后端脚本在远程主机上进行RBL检查。

因此,如果RBL检查清除并且验证码正确,我有ajaxForm.postResponse在对话框中填充一条消息。 现在,ajaxForm本身可以(如果可以)关闭对话框并打开一个新模式;但那样会 控制远离调用者的进程并要求ajaxForm知道调用者的意图(什么内容和什么模式 - 提示,灯箱,......)。我只想要验证码表格 执行测试并返回一个可以传递给调用者的二进制值。

是否有一种方法让被调用者告诉调用者(对话框实例)能够继续加载其前端的实际表单。例如。 jQuery.facebox({ajax:someUrl});

该对话框需要能够处理来自ajaxForm的一些返回值。 我在选项中查看了ui.dialog的公共方法,我看过扩展选项, 我看过与按钮相关的参数(e,ui)。一切都无济于事 在搜索网之后,我还没有找到任何已经发布方式来通过对话框的人可以使用它返回的值(在b4关闭,或关闭,或任何地方FTM)

就在这个上午,我意识到也许我可以聪明并且有ajaxForm.postResponse插入 在对话框中可以测试的对话框中的内容 (比如,OK图像)。因此,对话框将作用于标记的内容而不是 实际的返回值。什么是kludge。

有人知道在实例化后将值传递回对话框的方法吗? 我发现$(“#myDialog).data可以被$(”#myDialog).dialog“看到” 那么数据向量是否可能成为解决方案?设置myDialog.data('retVal','false') 然后将postResponse更改为true,如果确定并让对话框 然后测试close()/ beforClose()?

中的var

或者,$('#midDialog')。。dialog('option','retVal',false)怎么样; 在创建对话框后,ajaxForm.postResponse可以改变该选项。

还有其他方法吗? TIA

1 个答案:

答案 0 :(得分:0)

回答我自己的问题 - 您可以使用.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);

如果在ajaxForm的postResponse中一切正常,则设置 $('#dialog')。data('retVal',true); 并在dialog.beforeClose()中测试值并相应地采取行动             beforeclose:function(event,ui)                  if($(this).data('retVal')){                    jQuery.facebox({ajax:$(this).data('dest')});                  }             });

感到惊讶我发现网上其他任何地方都没有提到这一点。可能是因为大多数人 ppl正在以更复杂的方式使用ui-dialog。

无论如何,你有它,它就在那里