2011-04-18 106 views

回答

0

您正在尋找:

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語句也寫了,我剛剛擴展了這個指示的幾個值

+0

我有一個簡單的下拉菜單。三種選擇。基於某個選項選擇,我需要一個選項,使可見(vs. hide/show)表單元素和兩個將另一個表單元素的類更改爲「required」。 – adg 2011-04-18 13:35:31

+0

@adg - 在這種情況下,獲取'.selectedIndex'將正確地爲您標識哪個項目被選擇用於您的擔憂。 「警告」僅適用於那些想要確定用戶是否物理地選擇了一個選項,在該選項中,如果不與變化事件偵聽器組合,則.selectedIndex可能返回「誤報」。 – scunliffe 2011-04-18 13:49:07

+0

以上都是我的頭:)我對這個超新穎,所以很多代碼說話只會讓我更加困惑。 :) :)無論如何,如果我有「if(document.myform.myselectbox.selectedIndex!= -2),那麼我的」document.getElementById(「two」)。style.visibility =「visible」;「應該關閉if 「two」是列表中的第二個選項嗎? – adg 2011-04-18 14:13:55