2012-08-15 43 views
8

對HTML輸入有相當於readOnly="true"的HTML選擇字段是否存在屬性或技術?HTML選擇元素的只讀等效項

我有一個表單選擇字段我想禁用,但仍然傳遞表單時發佈。如果這是一個HTML輸入,我會做這樣的事情

$('select_id').setAttribute('readOnly', 'true'); 

和瀏覽器將使該領域作爲不可編輯,但它的價值仍然會傳遞給後端。我想要一個類似於HTML選擇的東西,但要做以下操作:

$('#select_id').setAttribute('readOnly', 'true'); 

不起作用。該屬性已成功添加到DOM,但瀏覽器仍將其呈現爲可選狀態。

我知道我可以做到以下幾點

$('#input_id').disabled(); 

但是當一個字段是禁用它的價值不是通過到後端通過。

我想要一種方法來禁用此選擇字段,但仍然傳遞到後端。

(示例使用原型JS,但我感興趣的任何通用的解決方案)

回答

22

禁用所有,但所選擇的選項:

<select> 
<option disabled="disabled">1</option> 
<option selected="selected">2</option> 
<option disabled="disabled">3</option> 
</select> 

這樣的下拉仍然有效(並提交其值),但用戶不能選擇其他值。

+2

不知道誰下投票或爲什麼,這似乎工作(至少在Chrome,現在測試其他瀏覽器) – 2012-08-15 20:10:17

+3

@AlanStorm,這是一個測試的地獄:)) – 2014-01-09 09:40:56

+2

這個解決方案的問題是,該用戶仍然可以取消選擇使用CTRL +點擊 – 2014-03-28 15:12:50

3

添加禁用類:

.disabled{ 
    color: grey; 
} 

如果類存在使用防止對焦點和單擊默認,DBL點擊:

$('#el').bind('click dblclick focus').function(event){ 
    if ($(this).hasClass('disabled')) event.preventDefault(); 
}); 
+4

值得注意的未來谷歌瀏覽器,這個例子似乎是usin g jQuery。 – 2012-08-15 20:14:41