2013-01-04 34 views
0

我正在構建一個表單,將通過ajax提交到後臺頁面。我想將選項作爲多選控件呈現,但是使用「以上都不是」選項。多選「無」選項

問題是,是否可以這樣做,以便不可能選擇「無」選項並仍然選擇其他選項?例如:

<select id="country" multiple="multiple"> 
    <option value>None</option> 
    <option value="1">Jamaica</option> 
    <option value="2">Cuba</option> 
    <option value="3">France</option> 
</select>​​​​​​​​​​​​​​​​​​​​​ 

這將是有效的用戶選擇「無」獨自一人,或「古巴」和「法國」 together--而不是「無」和「法國」。因此,如果用戶選擇「無」,然後選擇其他任何內容,「無」選項將被自動取消選擇?

我在頁面中使用jQuery,如果有幫助的話。

+1

我想你有關於這一點,但具體的要求.. 。你不能刪除「無」選項,並假設如果沒有選擇國家「無」適用? –

+0

您也可以考慮列表下方的「以上任何一個」複選框,以方便用戶和更易於編寫代碼。 – JJJ

+0

@ ClaudioRedi--這是最初的實現 - 但是那些選擇了一些東西的用戶沒有辦法很容易地「取消選擇」,而沒有做出另一個控制/按鈕來清除輸入。 – julio

回答

2

奇怪的要求,但無論如何,這可能會爲你工作:

$('#country').change(function() { 
    if ($('option:first', this).is(':selected')) { 
     $('option:not(:first)', this).prop('selected', false); 
    } 
});​ 

http://jsfiddle.net/zhKKw/

+2

我認爲這應該是另一種方式,即http://jsfiddle.net/zhKKw/1/ – ic3b3rg

+0

ic3b3rg是正確的,但感謝dfsq提供了一個簡單的乾淨解決方案! – julio

0

小提琴:http://jsfiddle.net/sajjansarkar/dRVN4/1/

var dropdown = $("#country"); 
    dropdown.click(function() { 
    var val = dropdown.val(); 
    if (val) { 
     var arr = val.toString().split(","); 
     if (arr.length > 0 && arr[0] == "") { 
      dropdown.val(""); 
     } 
    } 
});​ 
+0

仍然可以通過按Ctrl + A來選擇全部。 –