2013-08-23 36 views
19

我使用選項動態填充選擇框。當我這樣做時,我希望選擇框的值是第一個選項的值(如果你喜歡,可以選擇'默認選項')。聽起來很簡單,但我無法讓它工作。使用jQuery將選擇框的值設置爲第一個選項

var myElement = $('select[name="myName"]'); 

....嘗試以下三個變化

// myElement.find('option').first().prop('selected', 'selected'); 
// myElement.val(myElement.find('options').first().val()); 
myElement.prop('selectedIndex', 0); 

...但以下行給出了一個空白警報

alert(myElement.val()); 

我要去哪裏錯了?

+0

你是如何填充選項的?你可以創建一個JSFiddle的例子嗎? – Phil

+0

我看到的唯一原因是第一個選項有一個空白值,如果在更正後也會因爲結果而變得空白 –

回答

26

選項應該選項

myElement.find('option:eq(0)').prop('selected', true); 

你可以在操作上使用eq選擇器選擇第一個選項。

如果您知道第一個選項的值。那麼你可以簡單地做

myElemeent.val('first value') // Which selects the option by default 

你嘗試的第二種情況應該工作,除非你沒有在正確的位置打電話。即;等待ajax響應完成。

嘗試調用該donesuccess(不建議使用)處理函數中

+0

@Phil ..修復它..謝謝指出它 –

+0

謝謝Sushanth - 你說得對我沒有等待Ajax完成。 –

+0

@ Sushanth--這會觸發任何。與有問題的選擇相關的change()觀察者? – Plummer

5

你幾乎得到它,掉落的'在 '選項':

myElement.val(myElement.find('option').first().val()); 

Working jsFiddle

+0

那麼發現了,但仍然不起作用... –

+0

@KimPrince爲什麼?看看[這jsFiddle](http://jsfiddle.net/ZXqfW/)它的工作原理..我已經設置「選擇」的最後一個選項,然後使用此代碼恢復到第一個選項 –

+0

謝謝Yotam,你是對的,但我並沒有等待ajax電話完成。看到Sushanth的回覆... –

4

您還可以使用下面的代碼:

myElement[0].selectedIndex = 0; 

這得到的DOM元素(不是jQuery對象),可與香草的Javascript並根據它的索引使用它將第一個選項設置爲選定的選項。

0

如果你想確保你的選擇有一個值,而不是一個佔位符,你可以這樣做:

$('select option').filter(function (index, option) { 
    return option.attributes.value 
}).val() 

這樣,你會檢查HTML節點有屬性value而不是空的。

相關問題