【问题标题】:Setting the value (selected option) of a dijit.form.Select widget设置 dijit.form.Select 小部件的值(选定选项)
【发布时间】:2011-01-14 00:45:01
【问题描述】:

我有一个 dijit.form.Select 小部件。如果这很重要,它与数据存储相关联。它已经充满了几个选项。我想做的就是以编程方式设置它的值。我可以使用myWidget.attr('value') 获得它的值,但是如果我尝试做myWidget.attr('value', 5) 例如(其中 5 是有效值之一),它所做的只是重置小部件以选择第一个选项,无论我是什么值给它。

这似乎是一个错误,并且没有任何测试或文档显示如何完成我想要的。但是有什么办法,即使是肮脏的黑客攻击?

我正在使用 Dojo 1.4.0。请注意,dijit.form.Select 是 dojox.form.DropDownSelect 的新名称。

编辑:我什至尝试使用所有新选项重置小部件,但它忽略了具有selected = true 的选项,而只选择了第一个选项。不过还是有办法的。

【问题讨论】:

  • 这里有一个测试页面:bit.ly/9qitSk,你可以乱用。使用 fire-bug 我在该页面上成功使用了 dijit.byId('s9').attr('value', 'CO') 。这将在该页面上设置“基于商店的”选择。
  • @Joe B 非常感谢 - 我以前见过,但没有看到值设置示例。我曾尝试在 firebug 中使用自己的 Select 小部件执行此操作,但没有成功,所以我想知道有什么不同...
  • 顺便说一句,作为答案,我会支持你。

标签: javascript dojo


【解决方案1】:

转发我的评论: 这里有一个测试页面:dojo archive,你可以乱用。使用 fire-bug 我在该页面上成功使用了 dijit.byId('s9').attr('value', 'CO') 。这将在该页面上设置“基于商店的”选择。

但正如你所说,我使用字符串设置它,而你使用的是整数,所以我没有看到错误。很好的收获。

【讨论】:

  • 我看到了完全相同的问题(但试图单击下拉列表中的项目)。在这里,我使用的是 Dojo 1.7.3,而且绝对是使用 Stringrs! ://
【解决方案2】:

即使您的值是整数,如果您将整数设置为字符串,那么这将起作用。

dijit.byId( 'my_select' ).attr( 'value', String( 5 ) );

【讨论】:

  • 有没有办法以编程方式做到这一点?
  • 请注意,从 Dojo 2.0 开始,attr() 将不再起作用。
【解决方案3】:

原来这是一个错误 - 如果选项值不是字符串,它将不起作用(我的是整数)。

【讨论】:

  • 我认为这实际上是数组/哈希在 js 中工作方式的副作用。如果您使用 int,它会认为您正在索引数组,而不是将其用作哈希。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2020-03-04
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多