Dojo dijit.form.select:创建新的选择小部件后,旧小部件的选定值无法更改

Posted

技术标签:

【中文标题】Dojo dijit.form.select:创建新的选择小部件后,旧小部件的选定值无法更改【英文标题】:Dojo dijit.form.select: selected value of old widget cannot be changed after I create a new select widget 【发布时间】:2011-12-14 12:31:09 【问题描述】:

我正在通过 javascript 函数在 div 点击事件上创建新的选择框。

当用户单击 div 时,会在页面的其他位置(以及其他内容)创建一个新的选择框。

具体来说,在单击 div 时,我创建了一个字符串(在 javascript 函数中),格式如下:

<select id="derp"+divName dojoType="dijit.form.Select" onChange="dosomething()">
    <option value="foo">foo</option>
    <option value="bar">bar</option>
    ...
</select>

然后我调用一个函数来对上面的选择进行小部件化:

function makeDojoWidget(digitID)
    var widget = new dijit.form.Select(,digitID); //options,elementID

它可以很好地创建小部件。当用户单击另一个 div 时,它会创建另一个选择框。但是,只有新选择是可编辑的。即我无法更改其他选择框的选定值。

当我不尝试将其呈现为 dijit 时,它工作正常,所以这似乎是一个 dojo 问题(即,如果我创建一个常规选择,我可以在创建一个新选项时更改所有选择的选定值选择)。

我很难过...有什么建议吗??

【问题讨论】:

如果在函数范围之外声明 var 小部件会怎样? 你的digitIDs 是独一无二的吗?您是否有任何理由没有完全以编程方式制作和放置小部件? 【参考方案1】:

尝试强制启用它。 在你的功能中的一些话

function makeDojoWidget(digitID)
var widget = new dijit.form.Select(,digitID); //options,elementID

将 readOnly 设置为 false。

function makeDojoWidget(digitID)
var widget = new dijit.form.Select(readOnly:false,digitID); //options,elementID

【讨论】:

以上是关于Dojo dijit.form.select:创建新的选择小部件后,旧小部件的选定值无法更改的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 dijit.form.Select 中元素的顺序

Dojo:如何设置禁用新按钮

如何添加 optgroup do dijit.form.Select 或其他小部件类型

用dstore / Memory存储器存储来填充dijit / form / select

更改从商店加载选项的下拉 dojo 的字体大小

如何使 dijit.form.Select 与具有相同值的多个项目一起使用?