2013-10-09 91 views
0

我有一個「城市」的多選列表框包含框:jQuery的多個選擇 - 如何得到通知時,選擇的項目,並知道選擇哪個項目

1 - 第一項是「所有城市」

2 - 其餘項目都在選定的國家城市

我想實現以下行爲:

1 - 當選擇了第一項(「所有城市」),取消選擇任何其他項目(取消選擇已經選擇的城市項目)

2 - 如果除第一個任何項目,如果它的選擇被選中(一個城市被選中),取消選擇的第一個項目(但不要取消選擇所選擇的任何其他城市)

我已經試過處理的onChange - 但我不知道如何得到哪個是最後選擇的項目。

任何幫助表示讚賞。

+0

顯示試試看吧 –

+0

看到你的標記和腳本,在jsFiddle中說出來會很有幫助。如果沒有任何代碼,我可以告訴你的最佳答案是「將正確的事件添加到正確的元素中」。這是所有人都告訴,不是很有幫助。 –

回答

0

好的,所以我假設通過說「多選列表框」你的意思是<select multiple>元素。

然後在這裏我們去...

你提到不需要任何操作的第一個行爲,因爲當你單擊另一個選項,而不CTRL (or CMD in Mac)按壓從這種選擇的默認動作是取消選擇所有選項。

對於第二個,您必須監聽select元素的更改,然後驗證是否選擇了AllCities選項以及是否有其他options已選中。

因此,代碼會我想......

你有HTML:

<select id="cities" multiple> 
    <option value="All" selected>All Cities</option> 
    <option value="A">City A</option> 
    <option value="B">City B</option> 
    <option value="C">City C</option> 
</select> 

和腳本偵聽更改,如果選項All處於選中狀態,如果有選擇的另一選項太:

$('#cities').on('change',function(){ 
    var it = $(this); 
    if(it.val().indexOf("All") > -1 && it.val().length > 1){ 
     $('option[value="All"]',it).prop('selected',false); 
    } 
}); 

Here is a fiddle以顯示其行爲。

+0

非常感謝,但是這並不正確。在您選擇了一個或多個城市後,這將不允許您選擇「所有城市」。我希望它允許選擇「所有城市」,並在這樣做,取消選擇其他的一切。 –