2012-03-14 211 views
0

我已經寫下面幾行來顯示多選框,並且我想禁用之前選擇的一些選項。獲得選擇框中的禁用(禁用並選擇先前)選項的值

<select multiple="multiple" name='cars[]'> 
    <option value="volvo" disabled selected='selected'>Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

所以在這裏在POST方法中,我想獲得包括第一個沃爾沃在內的所有選定選項的值。

+0

有些瀏覽器(所有?)不發送禁用的字段。要麼改變它只讀或得到一些真正醜陋的JS hackery去:) – Corbin 2012-03-14 06:47:44

+0

你是什麼意思_previously selected_? – 2012-03-14 06:48:16

+0

在所有瀏覽器中解決此問題 – 2012-03-14 06:49:14

回答

1

Afaik,沒有現代瀏覽器將提交一個表單中禁用的選項/字段。最簡單的解決方案是使用「只讀」屬性將其設置爲「只讀」字段。

但是,您必須將字段樣式設置爲已禁用,因爲只讀不會改變字段的外觀,只會阻止用戶修改該字段。

然而,醜陋的部分是,一些瀏覽器將不允許readonly屬性設置爲選擇字段。

我在這種情況下通常會做的是實際禁用選擇並將其存儲在隱藏字段中,而不是使用一些不那麼醜陋的JavaScript來控制此動態。

更新:

你可以很容易地寫一個「serializeDisabled」功能,遍歷其中有一個name屬性,並使用jQuery.param功能末,生成序列化的字符串殘疾人表單元素(功能來自這裏的用戶CMS):

(function ($) { 
    $.fn.serializeDisabled = function() { 
    var obj = {}; 

    $(':disabled[name]', this).each(function() { 
     obj[this.name] = $(this).val(); 
    }); 
    return $.param(obj); 
    } 
})(jQuery); 
1

您可以創建一個javascript函數來循環選項onSubmit並再次啓用它們。禁用的元素不會發布。

1

當您設置禁用在POST數據永遠不會....替代選擇輸入型text..and使用「只讀」的,物業......

感謝

相關問題