我有一个页面,它使用dijit / form / Form来验证其中的所有表单小部件。
如果我将小部件直接放在Form(标记)下,验证可以正常工作。
一旦用dojox / mvc / Group(在表单中)包围小部件,表单验证完全停止,当我调用Form :: validate()时,没有任何小部件似乎验证。
调试Dojo代码显示嵌套窗口小部件在表单中永远不会被视为可验证,因此当我使用Group包围窗口小部件时,它们将被排除在验证之外。
有解决方法吗?
答案 0 :(得分:1)
dijit/form/_FormMixin#_getDescendantFormWidgets()
和dijit/_WidgetBase#getChildren()
的 AFAICT,可以通过将data-dojo-mixins="dijit/_Container"
添加到具有data-dojo-type="dojox/mvc/Group"
的元素来解决此问题。
另外(尽管我不确定它是否符合您的要求),dojox / mvc / tests / test_mvc_new_loan-stateful.html示例显示了带有dojox / mvc的表单验证解决方案。
希望它有所帮助。
Best,Akira
答案 1 :(得分:0)
似乎没有简单的方法可以用dijit / form / Form来解决这个问题。至少应该对它进行子类化或猴子修补,以使其考虑嵌套小部件。
但是,似乎dojox / form / Manager正确处理嵌套小部件,所以我已切换到它。
切换到Manager需要进行一些重构,因为它无法简单地转换为具有dom-form的对象(dijit / form / Form可以转换)。
以前的HTML代码:
<div
id="_pg_detailForm"
data-dojo-type="dijit/form/Form"
encType="multipart/form-data"
action="" method=""
>
... form widgets (surrounded with MVC Groups...etc)
</div>
后:
<form id="_pg_detailForm">
<div
id="_pg_detailFormManager"
data-dojo-type="dojox/form/Manager"
>
... form widgets (surrounded with MVC Groups...etc)
</div>
</form>