Вручную отправьте диалог Dojo - PullRequest
1 голос
/ 13 июля 2010

Я создал диалог в додзё с несколькими полями ввода.Основываясь на нескольких критериях, я хотел бы динамически определять целевой URL, в который публикуются данные в этом диалоговом окне (эквивалент атрибута действия в форме).Тем не менее, я не вижу способа установить действие диалога или даже как вручную передать его.

Вот версия диалога с пустыми руками:

<div id="my_dialog" dojoType="dojo.dijit.Dialog" style="display:none;" title="My Dialog">
<input type="text" dojoType="dijit.form.TextBox" id="input_1" name="input_1" value="info" />
<button type="submit" dojoType="dijit.form.Button">Submit</button>
</div>

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Я понял это и поделюсь тем, что я узнал.

Если вы поместите форму внутри диалога, вы сможете получить к ней доступ, как и к любой другой форме 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, только если форма должна быть отправлена.

Еще одна ловушка заключается в том, что все входные данные в диалоговом окне перемещены в конец домена. Так что, если у вас не было формы внутри диалога, и вы ожидали, что эти входные данные в диалоге будут отправлены с родительской формой, этого не произойдет. В этом случае я создаю скрытые поля внутри родительской формы, затем вручную копирую входные значения диалога в них перед отправкой.

0 голосов
/ 13 июля 2010

dijit.Dialog не имеет возможности подать себя вручную. Это просто контейнер, и вы должны сами управлять содержимым.

Если вы хотите отправить диалог, просто присоедините некоторые события к кнопке отправки и используйте XHR для отправки данных. По завершении отправки закройте диалоговое окно самостоятельно.

...