我有一个dojox/form/Manager
多层嵌套的表单,类似于这个 jsFiddle:http: //jsfiddle.net/8YDjT/1/
给定其中一个的名称,Fieldset
我怎样才能找到它下面的所有表单小部件?
例如给定fields_b
,我怎样才能找到小部件b_1
、、b_2
和b_3
,而不用硬编码它们的名称或其他类似的恶作剧?
我有一个dojox/form/Manager
多层嵌套的表单,类似于这个 jsFiddle:http: //jsfiddle.net/8YDjT/1/
给定其中一个的名称,Fieldset
我怎样才能找到它下面的所有表单小部件?
例如给定fields_b
,我怎样才能找到小部件b_1
、、b_2
和b_3
,而不用硬编码它们的名称或其他类似的恶作剧?
您可以从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)时执行。