如何在给定的字段集下查找表单小部件?

时间:2013-07-22 20:09:24

标签: forms dojo

我有一个dojox/form/Manager形式,有几个级别的嵌套,类似于这个jsFiddle:http://jsfiddle.net/8YDjT/1/

鉴于其中一个Fieldset的名称,如何在其下找到所有表单小部件

E.g。给定fields_b,如何在不对其名称或其他此类诡计进行硬编码的情况下找到小工具b_1b_2b_3

1 个答案:

答案 0 :(得分:2)

使用getDescendants(),您可以从特定小部件中获取所有子级(在所有级别上)。然后,您可以使用myWidget.declaredClass验证窗口小部件的类,以检查窗口小部件是否为dijit.form.*

例如:

require(["dijit/registry", "dojo/ready", "dojo/parser", "dojox/form/Manager", "dijit/Fieldset", "dijit/form/TextBox"], function (registry, ready) {
    ready(function() {
        registry.byId("fieldset_a").getDescendants().forEach(function(widget) {
            if (widget.declaredClass.match(/^dijit\.form\./i)) {
                 console.log(widget); // Form widget
            }
        });
    });
});

我还分叉了你的JSFiddle。但我删除了dojo/domReady!并切换到使用data-dojo-config="parseOnLoad: true"dojo/ready模块的自动解析,因为回调只会在DOM准备就绪时执行 AND 解析了dojo小部件(dijit)。