以编程方式更改由标签值对对象填充的 Dojo Form Select 的选定选项
Posted
技术标签:
【中文标题】以编程方式更改由标签值对对象填充的 Dojo Form Select 的选定选项【英文标题】:Programatically change selected option of a Dojo Form Select that is populated by label value pair object 【发布时间】:2013-04-25 03:06:37 【问题描述】:我有一个 Dojo 表单选择输入框,我在其中使用具有标签值对的 javascript 数据对象填充选项(下面构建此类对象的示例代码):
for loop
varStateValuePairs.push(
label: <State ID>,
value: <State Name>
);
dijit.byId("StateDDL").addOption(varStateValuePairs);
现在,我想以编程方式在此 Dojo 表单选择中选择特定状态。 我尝试了以下方法:
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");
以上都不起作用。我哪里错了?我进行了很多搜索,其他帖子中列出的解决方案都不适合我。我正在运行 Dojo 1.8。
【问题讨论】:
【参考方案1】:使用Select.setValue()
。
http://jsfiddle.net/fiddlegrimbo/qauHX/2/
默认会选择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");
);
);
【讨论】:
我看到您的代码在 jsfiddle.net 上运行良好。我在我的内部镜像了相同的代码,但它不起作用。我的所有其他页面都运行良好,Chrome 开发人员工具中没有显示错误。只有这部分不起作用。事实上,我还有其他(静态更新的)dojo 表单选择对象,它们都可以正常工作。 我明白了,除了仔细看看 jsfiddle 和您的代码之间的区别之外,不知道该说什么。 您对“仔细查看 jsfiddle 和您的代码之间的差异”的建议有所帮助。我能找到的唯一区别是我的值最初在数据对象中被分配为整数。我现在在构建数据对象时将其更改为字符串。这解决了问题。因此,结论是 Dojo.form.select 不适用于整数值。我们必须改用字符串。感谢朋友的帮助。 这听起来不错;可以让你盯着屏幕看几个小时的技巧之一!我相信这个小费会派上用场。以上是关于以编程方式更改由标签值对对象填充的 Dojo Form Select 的选定选项的主要内容,如果未能解决你的问题,请参考以下文章
使用 struts2 dojo 标签填充一个下拉列表以选择其他下拉列表