Я понял это и поделюсь тем, что я узнал.
Если вы поместите форму внутри диалога, вы сможете получить к ней доступ, как и к любой другой форме Dojo. Но вы должны убедиться, что диалог уже не в другой форме. Это была моя проблема, из-за которой внутренняя форма исчезала, когда диалог перемещался в конец тега 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 ("значение") совпадает с dijit.byId ("my_form"). Attr ("значение"). Это было то, что первоначально смутило меня и заставило меня думать, что сам диалог мог выступать в качестве формы.
Чтобы обработать или проверить форму перед ее отправкой, добавьте onclick = "return someFunction ();" и убедитесь, что функция возвращает true, только если форма должна быть отправлена.
Еще одна ловушка заключается в том, что все входные данные в диалоговом окне перемещены в конец домена. Так что, если у вас не было формы внутри диалога, и вы ожидали, что эти входные данные в диалоге будут отправлены с родительской формой, этого не произойдет. В этом случае я создаю скрытые поля внутри родительской формы, затем вручную копирую входные значения диалога в них перед отправкой.