2016-03-14 28 views
0

我有一個多選,我想知道用戶點擊了什麼選項。我在網上搜索,但不能得到任何體面的答案。我不想要所有選擇的選項的陣列,只是用戶點擊Multi Select DropDown-獲取當前選擇的選項

例如一個

選項A 選項B 選項C

如果期權的構件的點擊我想要得到選項A,如果成員然後選擇選項B,我想要選項B,而不是選項A和B.

我已經看到答案,他們說使用click事件,但進一步的研究表明,多選項點擊事件不會觸發,我必須在改變時使用。

之所以我需要這一點,是因爲我們有以下的要求

選項A 選項B 選項C 選項無

如果構件選擇A,則B,然後無,我需要所有要取消選擇的選項,以及剛選擇的「無」。

如果選擇「無」,且成員決定選擇「選項A」,則需要取消選擇「無」並需要選擇「選項A」。

我可以看到實現這一點的唯一方法是知道該成員點擊了什麼選項,如果爲None,則全部取消選擇,然後選擇None,否則,確保沒有選擇任何選項。

+0

你能提供的您已經嘗試什麼代碼示例? –

+0

這是代碼是什麼樣子,如果我管理,以獲得當前選定的選項。如果沒有,則取消所有選擇無,否則{取消無} – Philosopher

+0

我已經在網上查了我今天來最接近的是下面的代碼片段 – Philosopher

回答

0

獲得當前的選項中選擇(動態):

$('#myselect').change(function() { 
    alert($(this).val()); 
}) 

獲取當前選擇的選項(沒有動態):

$('#myselect option:selected').val(); 
+0

謝謝格雷格,但我已經嘗試過這一點,它給列表中選定的所有選項,我只想要一個我點擊。 – Philosopher

+0

選項A,選項B已被選中,然後點擊選項C,您的答案給我選項A,選項B和選項C,我需要的僅僅是選項C – Philosopher

0

這花了我谷歌搜索一點點弄明白作爲我從來沒有搞錯多選,但這裏是我想出來的代碼,它的工作方式是你想要的。它可能有改進的空間,但我現在沒有時間這樣做。

var arr = [], 
 
    index; 
 

 
$("#mymulti").on('click', 'option', function() { 
 
    if ($(this).is(':selected')) { 
 
    arr.push($(this).val()); 
 
    } else { 
 
    index = arr.indexOf($(this).val()); 
 

 
    if (index > -1) { 
 
     arr.splice(index, 1); 
 
    } 
 
    } 
 
    if (arr.length == 0) { 
 
    $('#mymulti').val(['None']); 
 
    arr.push('None'); 
 
    } else if (arr[0] === 'None' && arr.length > 1) { 
 
    index = arr.indexOf('None'); 
 
    arr.splice(index, 1); 
 

 
    $('#mymulti option[value="None"]').attr('selected', false); 
 
    } else { 
 
    $.each(arr, function(index, value) { 
 
     if (value === 'None' && index > 0) { 
 
     $("#mymulti option").attr('selected', false); 
 
     $('#mymulti option[value="None"]').attr('selected', true); 
 
     arr = ['None']; 
 
     } 
 
    }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="mymulti" multiple="multiple"> 
 
    <option value="1">Option A</option> 
 
    <option value="2">Option B</option> 
 
    <option value="3">Option C</option> 
 
    <option value="None">None</option> 
 
</select>

+0

感謝Diddle的響應,但點擊事件不會觸發,我認爲對於多選項,您需要使用我已經在線查看的更改,並且我得到相同的答案「點擊多項選擇不適用於多種瀏覽器 – Philosopher

+0

什麼瀏覽器不會觸發?我已經檢查過鍍鉻物,safari和Firefox和它的工作在所有的人。 –

+0

這是怪我,由於某種原因,單擊事件正在supressed,我應該怎麼用西爾維奧Morettos引導多選擇已經提到了。我去他的網站,發現有關事件用來得到我想要的,我張貼下面的答案。 – Philosopher

0

多選擇我使用了西爾維奧MORETTO的自舉選

由於某種原因,它是從射擊supressing上單擊鼠標右鍵事件。

我去他的網站,發現了以下事件

$( '#myMulti')。在( 'changed.bs.select',函數(EVT,clickedIndex){ 第二個參數給我當前選定的索引,這是我需要

https://silviomoreto.github.io/bootstrap-select/options/#events