Dojo On.change功能

时间:2014-10-14 15:54:24

标签: javascript dojo

我有许多组合框,我希望在选择其他值时更改值。我是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');
        }
    });   

1 个答案:

答案 0 :(得分:2)

您正在调用不正确的方法。没有像你在更改事件中使用的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');
    }
});   

请记住,函数名称区分大小写,因此请务必调用某些函数。 接下来,当您设置值时,您没有设置下拉列表,您只需在组合框的文本框中设置当前值。

如果要填充下拉列表,则应更改组合框的存储,例如(Dojo 1.8及更高版本):

registry.byId("cbEWASTE").set("store", new Memory({
  data: [{
    id: "Printer",
    name: "Printer"
  }]
}));

可以在JSFiddle上找到一个示例。