我想通了,會分享我學到的東西。
如果你把一個形式的對話框內,您可以訪問它,就像任何其他道場形式。但是你必須確保對話框還不是另一種形式。這是我的問題,當對話框移動到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