Dijit Form isValid返回false,而validate在销毁后代后返回true

时间:2016-09-22 17:44:27

标签: dojo dijit.form

我在使用dijit 1.11.完成表单时遇到一个非常奇怪的问题,在这种情况下,表单中有一些dijit/layout/ContentPane,表单本身是TabContainer }。在提交之前,根据一些规则,通过调用其中的destroyRecursive来删除一些窗格。事情是,表格仍未提交。

进一步检查,validate()方法返回true但isValid返回false,这就是提交不触发的原因。检查isValid方法,我发现表单的_descedents属性没有清除在销毁子窗格时以递归方式销毁的小部件。其中一些小部件的状态为Incomplete,这使得isValid返回false(尽管validate返回true)。

发生了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我将尝试发布jsFiddle后者,更好地解释该bug,但作为解决方案,您需要在销毁ContentPane后调用Form connectChildren()方法,这将重新创建_descendants数组,使isValid函数只检查现有元素