0

我有一个dojox/form/Manager多层嵌套的表单,类似于这个 jsFiddle:http: //jsfiddle.net/8YDjT/1/

给定其中一个的名称,Fieldset我怎样才能找到它下面的所有表单小部件

例如给定fields_b,我怎样才能找到小部件b_1、、b_2b_3,而不用硬编码它们的名称或其他类似的恶作剧?

4

1 回答 1

2

您可以从getDescendants()特定小部件中获取所有子级(所有级别)。然后,您可以验证小部件的类,myWidget.declaredClass以检查小部件是否为 a 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 准备好并且解析 dojo 小部件(dijit)时执行

于 2013-07-22T21:14:39.187 回答