Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置dijit.form.Select小部件的值(选定选项)_Javascript_Dojo - Fatal编程技术网

Javascript 设置dijit.form.Select小部件的值(选定选项)

Javascript 设置dijit.form.Select小部件的值(选定选项),javascript,dojo,Javascript,Dojo,我有一个dijit.form.Select小部件。如果有必要的话,它与数据存储绑定在一起。它已经有好几个选项了。我只想通过编程设置它的值。我可以使用myWidget.attr('value')获取它的值,但是如果我尝试执行myWidget.attr('value',5)例如(其中5是有效值之一),它所做的就是重置小部件以选择第一个选项,无论我给它什么值 这似乎是一个bug,没有任何测试或文档显示如何实现我想要的。但是有没有办法,即使这是一个肮脏的黑客 我正在使用Dojo1.4.0。请注意,dij

我有一个dijit.form.Select小部件。如果有必要的话,它与数据存储绑定在一起。它已经有好几个选项了。我只想通过编程设置它的值。我可以使用
myWidget.attr('value')
获取它的值,但是如果我尝试执行
myWidget.attr('value',5)
例如(其中5是有效值之一),它所做的就是重置小部件以选择第一个选项,无论我给它什么值

这似乎是一个bug,没有任何测试或文档显示如何实现我想要的。但是有没有办法,即使这是一个肮脏的黑客

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


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

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

重新发布我的评论: 这里有一个测试页面:你可以搞乱它。使用firebug,我在该页面上成功地使用了dijit.byId('s9').attr('value','CO')。这将在该页面上设置“基于商店”的选择


但是正如你说的,我用一个字符串设置它,你用的是整数,所以我没有看到错误。捕捉得好。

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

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

这里有一个测试页面:你可以搞乱它。使用firebug,我在该页面上成功地使用了dijit.byId('s9').attr('value','CO')。这将设置该页面上的“基于商店”选项。@Joe B非常感谢-我以前见过,但没有看到值设置示例。我曾经用我自己的Select小部件在firebug中尝试过这样做,但不起作用,所以我想知道有什么不同…顺便说一句,作为答案,我会给你投票。我认为这实际上是数组/哈希在js中工作的副作用。如果您使用int,它会认为您正在索引数组,而不是将其用作散列。我看到了完全相同的问题(但尝试单击下拉列表中的项目)。在这里,我使用的是Dojo 1.7.3,最肯定的是使用Stringrs!:/有没有一种方法可以通过编程实现这一点?请注意,从Dojo 2.0 attr()将不再工作。