2011-06-20 57 views
3

如何使用Prototype從下拉列表中取消選擇所選值。原型 - 如何從下拉列表中取消選擇所選值

<select id=「mylist」 MULTIPLE > 
<option value=「val-1」>Value 1</option> 
<option value=「val-2」 SELECTED>Value 2</option> 
<option value=「val-3」>Value 3</option> 
</select> 

<select id=「mylist」 MULTIPLE > 
<option value=「val-1」>Value 1</option> 
<option value=「val-2」>Value 2</option> 
<option value=「val-3」>Value 3</option> 
</select> 

感謝提前任何幫助。

+0

還有一個原因幾乎總是存在一個默認的(通常是空的,有時「請選擇」或類似) - 這是必須要選擇。 –

+0

你的問題是描述改變'selected' DOM屬性,但你的代碼示例要求改變'selected' HTML布爾屬性。爲何差異? – 2011-06-20 16:25:25

+0

我有兩個下拉菜單。如果用戶從一箇中選擇,我需要從另一箇中取消選擇。 – woot586

回答

1

我發現下面的代碼運行良好:

var options = $$('select#mylist option'); 
var len = options.length; 
for (var i = 0; i < len; i++) { 
    options[i].selected = false; 
} 
+1

這正是我的小提琴。 – kzh

2

您不能:你必須添加一個空的選項

<option></option> 

然後

$$("#mylist option[selected]")[0].selected = false; 
$$("#mylist option")[0].selected = true; 
2

在第二列表上的情況下選擇......

Event.observe('secondlist', 'change', function(){ 
    if (this.selectedIndex >= 0) 
    $$('#mylist option[selected]').invoke('writeAttribute', 'selected', false); 
}); 
11

我不知道如何在原型中做到這一點,但我可以在JavaScript中做到這一點。

對於常規選擇,請設置yourSelectElement.selectedIndex = -1

對於多選擇,你可以選擇的項目只是CTRL +點擊,但你可以做到這一點編程爲好。請參閱鏈接。

http://jsfiddle.net/kaleb/WxJ9R/

+0

+1爲常規選擇技巧。這是我不知道的。 – clockworkgeek

+0

jQuery也不會這麼做 - 至少在我所做的有限看似。 ($「」#mySelect「).val(null)'和'$(」#mySelect「)。prop(」selected「,null)'關閉高亮區但不實際從select-一。我的驗證認爲mySelect有一個選擇並允許提交,即使它沒有被選中。 – gordon

相關問題