我想通了,会分享我学到的东西。
如果你把一个形式的对话框内,您可以访问它,就像任何其他道场形式。但是你必须确保对话框还不是另一种形式。这是我的问题,当对话框移动到body标签的末尾时,它导致内部形式消失。
<div id="my_dialog" dojoType="dojo.dijit.Dialog" style="display:none;" title="My Dialog">
<form id="my_form" dojotType="dijit.form.Form" method="post" action="/path/">
<input type="text" dojoType="dijit.form.TextBox" id="input_1" name="input_1" value="info" />
<button type="submit" dojoType="dijit.form.Button" onclick="return someFunction();">Submit</button>
</form>
</div>
使用上面的结构,你有几个选项来获得表单的值:从对话框,还是从形式。这意味着dijit.byId(“my_dialog”)。attr(“value”)与dijit.byId(“my_form”)。attr(“value”)相同。这就是最初使我困惑的原因,并使我对话本身可以作为一种形式。
处理或在提交之前验证表单中加入onclick =“返回someFunction();”,并确保该函数返回true,只有当形式应提交。
一个额外的缺陷是在对话框中的所有输入被移动到DOM的末尾。因此,如果您没有对话框中的表单,并且您希望对话框中的这些输入用父表单提交,则不会发生。在这种情况下,我在父窗体中创建隐藏字段,然后在提交之前手动将对话框输入值复制到它们中。
感谢您的回复!我也查看了xhr手动提交表单数据,但是我需要发布没有ajax的数据,因为发布的数据确定了用户最终会在哪里结束。这可以通过xhr回调来完成,但在这种情况下,执行普通帖子是有意义的。 – 2010-07-14 15:19:51