2014-02-26 14 views
0

,所以我有一個工作特性,當用戶選擇我的選擇輸入上的任何選項時,將更改選擇類。當任何選項被選中除了一個

這工作得很好,但我想要的是,如果用戶再次選擇第一個選項,然後班級變回來。

第一個選項設置爲佔位符,我不能給它一個值,因爲我只希望信息被髮布,如果任何其他選項被選中。

我也不能設置輸入爲禁用,因爲我希望用戶能夠重新選擇它之後,因爲他們不想發佈該數據。

它的一個很長的檢查列表,我發佈數據作爲數組。

這裏是一個的jsfiddle什麼我目前有:

http://jsfiddle.net/SD7cd/1/ 

代碼:

<select id="sel1" class="selectoption" name="desc[]"> 
    <option selected="selected">Select an option...</option> 
    <option value="1">Option 1</option> 
</select> 

JS:

document.getElementById("sel1").onchange = function() { 
if(this.value != null && this.value != undefined) 
{ 
    this.className = "selectoption-okay"; 
} 
}; 

回答

1

我會使用.selectedIndex資源在價值像這樣:

document.getElementById("sel1").onchange = function() { 
    this.className = (this.selectedIndex != 0) ? "selectoption-okay":"selectoption"; 
}; 
012當您使用

jsFiddle example

一個問題是,第一個選項都會有,即使你沒有明確地給它賦值。如果未明確給出值,則選項元素的值將默認爲其內容,否則它不會爲空或未定義。

MDN

這個屬性的文本內容表示標籤解釋 的選項。如果未定義,則其默認值爲元素的文本內容 。

+1

完美!非常感謝!我需要看看這個方法,而不是使用if語句 – Lovelock

0

你可以試試這個,當你選擇該選項Select an option...,如果你還沒有分配value=''然後Select an option...將被視爲一個值。

因此增加

<option selected="selected" value="">Select an option...</option> 
          ^^^^^^^^ 

HTML:

<select id="sel1" class="selectoption" name="desc[]"> 
    <option selected="selected" value="">Select an option...</option> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
</select> 

的Javascript:

document.getElementById("sel1").onchange = function() { 
    this.className = "selectoption";  
    if(this.value != '') 
    { 
    this.className = "selectoption-okay"; 
    } 
}; 

DEMO:http://jsfiddle.net/SD7cd/4/

相關問題