dijit.form.Select默认选中异常及无法选择指定选项问题求助
解决dijit.form.Select默认选中错误值且无法选中目标选项的问题
Hey,我看了你的代码,发现几个关键问题导致dijit.form.Select组件出现默认值错误、无法选中目标选项的情况,咱们一步步来修复:
你的问题代码
function loadHoldQueueNames(data) { // statusUpdate("Load Hold Queue Names..."); var holdQueuesData = new Array(); holdQueuesData[0] = {id : "", label : "Hold Queue!"}; for (var i = 0; i < data.data.length; i++) holdQueuesData[i+1] = {id : data.data[i], label : data.data[i]}; holdQueuesStore = new Memory({data: holdQueuesData}); var os = new ObjectStore({ objectStore: holdQueuesStore }); omgmeatHoldQueueSelect = new dijit.form.Select({ name: "omgmeatHoldQueueSelect", store: omgmeatHoldQueueSelectValue, disabled: !userProfile.allowHoldQueue, value : omgmeatHoldQueueSelectValue }, "omgmeatHoldQueueSelect"); omgmeatHoldQueueSelect.startup(); style.set("omgmeatHoldQueueSelect", {width: "200px"}); dojo.connect(omgmeatHoldQueueSelect, "onChange", updateNextOrderButton); };
问题分析
- Store参数错误:你明明创建了正确的
ObjectStore实例os,但初始化Select时却传入了未定义的omgmeatHoldQueueSelectValue作为store,这直接导致组件无法正确加载选项数据。 - 默认值参数错误:
value属性同样用了未定义的omgmeatHoldQueueSelectValue,组件自然无法选中你想要的选项。 - 代码格式混乱:你的代码没有换行缩进,很容易忽略这些变量引用错误。
修正后的代码
function loadHoldQueueNames(data) { // statusUpdate("Load Hold Queue Names..."); var holdQueuesData = new Array(); holdQueuesData[0] = {id : "", label : "Hold Queue!"}; for (var i = 0; i < data.data.length; i++) { holdQueuesData[i+1] = {id : data.data[i], label : data.data[i]}; } holdQueuesStore = new Memory({data: holdQueuesData}); // 创建正确的ObjectStore实例 var os = new ObjectStore({ objectStore: holdQueuesStore }); // 初始化Select组件,修正store和value参数 omgmeatHoldQueueSelect = new dijit.form.Select({ name: "omgmeatHoldQueueSelect", store: os, // 使用我们创建的os作为数据源 disabled: !userProfile.allowHoldQueue, value: "" // 设置你需要默认选中的选项id,这里默认选中第一个"Hold Queue!" }, "omgmeatHoldQueueSelect"); omgmeatHoldQueueSelect.startup(); style.set("omgmeatHoldQueueSelect", {width: "200px"}); dojo.connect(omgmeatHoldQueueSelect, "onChange", updateNextOrderButton); };
额外注意事项
- 如果你想默认选中某个具体的队列,把
value的值改成对应队列的id即可,比如想选中第一个数据队列,就设为data.data[0]。 - 后续如果需要动态修改选中值,可以调用
omgmeatHoldQueueSelect.set('value', '目标选项id')方法。 - 确认
userProfile.allowHoldQueue的值是否符合预期,避免组件被意外禁用导致无法选择选项。
内容的提问来源于stack exchange,提问作者sk aslam
相关产品推荐
相关产品推荐

