您好 Dojo 开发人员,我有一个下拉 form.select,它有几个选项,如何设置要选择的选项。假设我想在选择元素中显示第三个选项。我正在查看 dojo 文档,但没有看到 setSelected() 或类似内容。
谢谢
您好 Dojo 开发人员,我有一个下拉 form.select,它有几个选项,如何设置要选择的选项。假设我想在选择元素中显示第三个选项。我正在查看 dojo 文档,但没有看到 setSelected() 或类似内容。
谢谢
除了 value 之外,您还需要使用 displayValue 属性来设置显示的选项。使用类似的东西:
selector.set("displayedValue", "the_text_of_the_option");
或者您可以使用以下命令搜索下拉列表的基础存储:
selectorStore.fetch({query:{id: value}, onComplete: function (items) {
dojo.forEach(items, function(item){
selector.set("displayedValue", "the_text_of_the_option");
selector.set("value", "the_value_of_the_option");
});
}});
希望有帮助。
我找到了,是 selector.attr("value", "the_name_of_the_option");
谢谢,这是真的并且有效。我已经测试过了。但是我发现了我的错误:我正在动态创建选项,并且当我将 .selected = true 添加到选择器时,它会将饱和更改为第一个被选中的选项。或者如果我应用selector.set("displayedValue", "the_text_of_the_option");
它在视觉上显示选定的一个,但实际上在选定的后面仍然是第一个不计量,如果我用上面的 selector.set 更改它。所以我通过手动创建选定状态来解决它。这样,当我添加它时,字母 id 会保留在所需的位置并相应地更改它。
剪在这里:
//populate latitude selector
match = false;
optionsArr = [];
for(var i = 0; i < namesLength; i++){
for(var j = 0, len2 = latNames.length; j < len2; j++){
if(fieldNames[i].toLowerCase() == latNames[j]){
for (var a = 0; a < namesLength; a++) {
var option = {};
option.label = fieldNames[i];
option.value = i+"";
if(i==a){
option.selected = true;
}
optionsArr.push(option);
}
match = true;
}
}
}
if(match){
var drop1 = dijit.byId("selectLatitude");
drop1.addOption(optionsArr);
}else{
var drop1 = dijit.byId("selectLatitude");
drop1.addOption(options);//options is an array of options created originally
}