我正在尝试放置一个带有id的选择框,但我认为我没有在dojo.place方法上正确输入参数,因为它是在Firefox中呈现而不是IE:
var removeOpt = dojo.query('#sSec2 option');
this._sec1 = new widget.StyledDropdown(dojo.byId("sSec1"), function(){
dojo.hitch(sm, sm.collectInfo);
//Make sure the second security question does not populate with the first security question option selected
var el = this._el, selected = this.getValue();
// empty out the other select menu
//dojo.empty(dojo.byId('sSec2'));
dojo.query("#sSec2 option").forEach(dojo.destroy);
// looping thru the cached options for the second select menu
dojo.forEach(removeOpt, function(that){
if (that.value != selected) {
dojo.place(that, dojo.byId('sSec2'));
}
});
// rebuild
Dropdowns.byId('sSec2').build();
}, true);
var removeOpt2 = dojo.query('#sSec1 option');
this._sec2 = new widget.StyledDropdown(dojo.byId("sSec2"), function(){
dojo.hitch(sm, sm.collectInfo2);
//Make sure the first security question does not populate with the second security question option selected
var el = this._el, selected = this.getValue();
// empty out the other select menu
//dojo.empty(dojo.byId('sSec1'));
dojo.query("#sSec1 option").forEach(dojo.destroy);
// looping thru the cached options for the second select menu
dojo.forEach(removeOpt2, function(that){
if (that.value != selected) {
dojo.place(that, dojo.byId('sSec1'));
}
});
// rebuild
Dropdowns.byId('sSec1').build();
我能得到一些建议吗?
答案 0 :(得分:2)
你调用它的方式是将每个添加为id为“sSec2”的节点的(当前)最后一个子节点。
http://dojotoolkit.org/api/dojo/place
更重要的是,你的条件检查是什么?什么是selected
?它没有被引用 - 这是故意的吗?
好的,周围代码带来的背景会引发更多潜在的故障排除点。
this.getValue()
返回您的期望? (大概true
或false
与相关比较进行评分
dojo.hitch
行上,您打算执行该功能吗?如果是,请在结尾添加另一个()
- dojo.hitch
返回一个函数,不会自行执行。widget.StyledDropDown
没有延长dijit._Widget
?由于您传递构造函数的参数格式完全不同。您是否可以在http://jsfiddle.net/上投放(非)工作样本?