Dojo On.change function



我有很多组合框,当选择其他值时,我希望在其中更改值。我在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上找到。

最新更新