2011-04-08 62 views
1

考慮到我們有這樣的HTML:如何檢索空的OPTION值是否爲空?

<select id="my_select"> 
    <option value="1">Foo</option> 
    <option value="2">Bar</option> 
    <option value="">Bork</option> 
    <option value="3">Hey!</option> 
</select> 

正確的方式來獲得所選擇的value是:

var oS = document.getElementById("my_select"); 
alert(oS.options[oS.selectedIndex].value); 

但如果第三個選項,博克,選擇了alert()會顯示"Bork",而不是""(空字符串)。 如何檢索空字符串?

TYIA

+0

你不能給Bork一個價值嗎? – 2011-04-08 17:51:10

回答

7

首先,它沒有。對於我而言,在Chrome和IE8中,您的示例會提示空字符串(jsFiddle)。

但是,如果根本沒有設置valuejsFiddle),則會提醒Bork。我認爲,這是你要面對的問題。這是正確的行爲。如the MDC page所述,

如果未定義,則其默認值爲元素的文本內容。

你可以,但是,使用該方法getAttribute,如果沒有元件被選擇(jsFiddle)其給出null

var oS = document.getElementById("my_select"); 
alert(oS.options[oS.selectedIndex].getAttribute('value')); 
+0

同意。同樣的事情發生在我身上:http://jsbin.com/iqefa3 – ryanulit 2011-04-08 18:01:29

+0

所以我的例子有什麼問題? – mcgrailm 2011-04-08 18:11:36

+0

@mcgrailm:我認爲你誤讀了。你的回答描述的是OP目前正在發生的事情,而不是他們想要的。 – 2011-04-08 18:47:16

0

警報(的document.getElementById( 「my_select」)。值)

返回空字符串,或任何限定的所選選項的值。

無需指定選項[的selectedIndex]

如果沒有默認選擇的索引,則返回第一個選項值。

如果所選的選項沒有價值屬性,

選項的文本在大多數瀏覽器的腳本警報返回,

並且被髮送到服務器(如果選擇有名稱和表單操作)在所有瀏覽器中。