您正在尋找:
if (document.myform.myselectbox.selectedIndex != -1)
當沒有什麼選擇的索引返回-1
。
如果你真的想爲所選選項的內部值或文本字符串中,你可以通過索引訪問:
var selObj = document.myform.myselectbox;
var selIndex = selObj.selectedIndex;
var selOptionValue = selObj.options[selIndex].value;
var selOptionText = selObj.options[selIndex].text;
但是你需要注意的是,行爲也有點依賴於如何你有它顯示。如果您沒有指定某個特定的選項是「被選中」的,則使用「單個」選擇元素(例如「下拉」),那麼第一個選項(索引0
)被認爲是被選中的,因爲它是如何被視覺顯示的。
<select>
<option>red</option><!-- "selected" by default when rendered -->
<option>orange</option>
<option>yellow</option>
...
</select>
如果有一個大小爲一個選擇元件屬性大於1(例如,6)然後目視有沒有選擇,從而所述元件將返回-1默認(如果選擇了無)
<select size="6">
<option>red</option><!-- NOT "selected" by default when rendered -->
<option>orange</option>
<option>yellow</option>
...
</select>
無論哪種方式,你可以使用這樣的代碼,以確定該怎麼做:
var mySelect = document.myform.myselectbox;
var selIndex = mySelect.selectedIndex;
if(selIndex != -1){
//an option is selected
if(selIndex == 0){
//first option is selected
} else if(selIndex == 1){
//second is selected
} else if(selIndex == 2){
//third is selected
}
} else {
//no option is selected
}
你可以這樣使用開關/ case語句也寫了,我剛剛擴展了這個指示的幾個值
我有一個簡單的下拉菜單。三種選擇。基於某個選項選擇,我需要一個選項,使可見(vs. hide/show)表單元素和兩個將另一個表單元素的類更改爲「required」。 – adg 2011-04-18 13:35:31
@adg - 在這種情況下,獲取'.selectedIndex'將正確地爲您標識哪個項目被選擇用於您的擔憂。 「警告」僅適用於那些想要確定用戶是否物理地選擇了一個選項,在該選項中,如果不與變化事件偵聽器組合,則.selectedIndex可能返回「誤報」。 – scunliffe 2011-04-18 13:49:07
以上都是我的頭:)我對這個超新穎,所以很多代碼說話只會讓我更加困惑。 :) :)無論如何,如果我有「if(document.myform.myselectbox.selectedIndex!= -2),那麼我的」document.getElementById(「two」)。style.visibility =「visible」;「應該關閉if 「two」是列表中的第二個選項嗎? – adg 2011-04-18 14:13:55