Javascript 以编程方式更改由标签-值对对象填充的Dojo表单选择的选定选项

Javascript 以编程方式更改由标签-值对对象填充的Dojo表单选择的选定选项,javascript,dojo,dojox.mobile,Javascript,Dojo,Dojox.mobile,我有一个Dojo表单选择输入框,我在其中使用具有标签值对的javascript数据对象填充选项(下面是构建此类对象的示例代码): 以上这些都不起作用。我错在哪里?我搜索了很多,其他帖子中列出的解决方案都不适合我。我正在运行Dojo 1.8。使用Select.setValue() 默认情况下将选择value0,我们手动选择value2 var varStateValuePairs = []; for (var i = 0; i < 10; i++) { varStateValuePai

我有一个Dojo表单选择输入框,我在其中使用具有标签值对的javascript数据对象填充选项(下面是构建此类对象的示例代码):

以上这些都不起作用。我错在哪里?我搜索了很多,其他帖子中列出的解决方案都不适合我。我正在运行Dojo 1.8。

使用
Select.setValue()

默认情况下将选择
value0
,我们手动选择
value2

var varStateValuePairs = [];
for (var i = 0; i < 10; i++) {
  varStateValuePairs.push({
    label: "state"+i, 
    value: "value"+i
  });
}

require(["dojo/parser", "dijit/registry", "dijit/form/Select", "dojo/domReady!"], function (parser, registry) {
    parser.parse().then(function () {
        var widget = registry.byId("StateDDL");
        widget.addOption(varStateValuePairs);
        widget.setValue("value2");
    });
});
var varStateValuePairs=[];
对于(变量i=0;i<10;i++){
varStateValuePairs.push({
标签:“州”+i,
值:“值”+i
});
}
require([“dojo/parser”,“dijit/registry”,“dijit/form/Select”,“dojo/domReady!”),函数(解析器,注册表){
parser.parse().then(函数(){
var widget=registry.byId(“statedll”);
addOption(varStateValuePairs);
widget.setValue(“value2”);
});
});

我发现您的代码在jsfiddle.net上运行良好。我在我的代码中镜像了相同的代码,但它不起作用。我的其他所有页面都运行良好,在Chrome开发者工具中没有显示错误。只有这部分不起作用。事实上,我还有其他(静态更新的)dojo form select对象,它们都工作得很好。我明白了,不知道接下来该说什么,只是可能会仔细看看JSFIDLE和您的代码之间的差异。您关于“仔细看看JSFIDLE和您的代码之间的差异”的建议很有帮助。我能找到的唯一区别是,我的值最初在数据对象中被指定为整数。我现在在构建数据对象时将其更改为字符串。这就解决了问题。所以,结论是Dojo.form.select与整数值不匹配。我们必须改用字符串。谢谢你的帮助,伙计。那听起来是个好地方;其中的一个技巧,可以让你盯着屏幕几个小时!我相信那个小费会派上用场的。
dijit.byId("StateDDL").attr("value", String(5)); // 5 is the example value corresponding to the label-value pair I want to select
dijit.byId("StateDDL").attr("value", 5);
dojo.byId("StateDDL").value = 5;
dijit.byId("StateDDL").set("displayedValue", "Texas");
var varStateValuePairs = [];
for (var i = 0; i < 10; i++) {
  varStateValuePairs.push({
    label: "state"+i, 
    value: "value"+i
  });
}

require(["dojo/parser", "dijit/registry", "dijit/form/Select", "dojo/domReady!"], function (parser, registry) {
    parser.parse().then(function () {
        var widget = registry.byId("StateDDL");
        widget.addOption(varStateValuePairs);
        widget.setValue("value2");
    });
});