我有很多组合框,当选择其他值时,我希望在其中更改值。我在JavaScript方面相当新手,以下是我从其他同事那里收集到的内容。理想的工作流程是,如果在cbRequestType中选择了电子垃圾,那么填充的项目只有下面的项目,如复印机、打印机等。这不起作用,我可能缺少什么?
此外,我的应用程序已经维护了一个函数,该函数从数据库填充cbEWASTE下拉列表。我想顺便传递这个函数,并在更改时填充组合框。
dijit.byId("cbRequestType").on('change', function(MFValue) {
if (MFValue == 'E-WASTE') {
dijit.byID("cbEWASTE").set('value', 'Copy Machine');
}
else if (MFValue == '...') {
dijit.by.ID('cbEWASTE').set('value', 'Printer');
}
});
您调用的方法不正确。没有像您在变更事件中使用的那样被称为byID()
或by.ID()
的函数。正确的用法是:
dijit.byId("cbRequestType").on('change', function(MFValue) {
if (MFValue == 'E-WASTE') {
dijit.byId("cbEWASTE").set('value', 'Copy Machine');
}
else if (MFValue == '...') {
dijit.byId('cbEWASTE').set('value', 'Printer');
}
});
请记住,函数名称区分大小写,因此在调用某些函数时要小心。接下来,当您设置值时,您不是在设置下拉列表,而是在组合框的文本框部分设置当前值。
如果您想填充下拉列表,您应该更改组合框的存储,例如(Dojo1.8及更高版本):
registry.byId("cbEWASTE").set("store", new Memory({
data: [{
id: "Printer",
name: "Printer"
}]
}));
一个例子可以在JSFiddle上找到。