2010-02-07 47 views
14

我有一個dijit.form.Select小部件。它與數據存儲綁定在一起,如果這很重要的話。它已經充滿了幾個選項。我想要做的就是以編程方式設置它的值。我可以使用myWidget.attr('value')來獲得它的值,但是如果我嘗試執行myWidget.attr('value', 5)例如(其中5是有效值之一),則只需重置該小部件即可選擇第一個選項,而不管我給出的值如何。設置dijit.form.Select小部件的值(選定選項)

這似乎是一個錯誤,並沒有任何測試或文檔顯示如何完成我想要的。但是有沒有辦法,即使它是一個骯髒的黑客?

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

編輯:我甚至嘗試重置所有新選項的小部件,但它忽略了selected = true選項,只是選擇第一個選項。儘管如此,仍然有一定的方法。

+0

這裏有一個測試頁面:http://bit.ly/9qitSk,你可以搞砸了。使用fire-bug,我在頁面上成功使用了dijit.byId('s9')。attr('value','CO')。這將在該頁面上設置「基於商店的」選擇。 – jbarz 2010-02-15 23:12:51

+0

@Joe B非常感謝 - 我之前看到過,但沒有看到價值設置示例。我試圖用我自己的選擇小部件在螢火蟲中做到這一點,這並沒有工作,所以我不知道有什麼不同... – aehlke 2010-02-18 09:15:49

+0

順便說一句,作爲一個答案,我會upvote你。 – aehlke 2010-02-18 09:16:09

回答

15

即使您的值是整數,如果您將整數設置爲一個字符串,那麼這將工作。

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

有沒有辦法做到這一點編程? – streetlight 2014-05-01 12:30:50

+0

請注意,從Dojo 2.0開始,attr()將不再工作。 – algiogia 2016-06-28 08:58:18

11

原來,這是一個錯誤 - 如果選項值不是字符串,它將無法正常工作(我的是整數)。

+3

這實際上是數組/散列在js中工作的副作用,我認爲。如果你使用int,它會認爲你在索引數組,而不是將它用作散列。 – aehlke 2010-04-10 18:20:24

2

轉發我的評論: 有一個測試頁面在這裏:dojo archive,你可以搞砸了。使用fire-bug,我在頁面上成功使用了dijit.byId('s9')。attr('value','CO')。這將在該頁面上設置「基於商店的」選擇。

但正如你所說我使用一個字符串設置它,你使用整數,所以我沒有看到錯誤。接得好。

+0

我看到完全相同的問題(但嘗試點擊下拉菜單中的項目)。在這裏,我使用Dojo 1.7.3,絕對使用Stringrs! :/ – 2012-10-30 22:35:27

相關問題