2017-03-22 236 views
1

我有一個動態引導多個下拉選擇器。Jquery檢測引導多個選項下拉被取消選擇

我想運行一些代碼,當用戶取消選擇一個選項。

<select id="selectOptions" multiple> 
    <option>Test1</option> 
    <option>Test2</option> 
    <option>Test3</option> 
    <option>Test4</option> 
    <option>Test5</option> 
<option>Test6</option> 
</select> 

我想通過jQuery來做到這一點,但是我有哪些已經在選擇一個選項運行一個選擇,我會怎麼做,當用戶點擊取消選擇該選項。

感謝

回答

1

你可以做的是一個change監聽器添加到select元素,並保持所有項目的數組這名聽衆上次被選中時被選中。通過這種方式,您可以將當前選中的項目數組與之前選定項目的數組進行比較,以確定哪些項目未被選中。

下面是一個例子:

var prevSelected = []; 
 
$("#selectOptions").change(function(){ 
 
    var selected = $(this).val() || []; 
 
    var unselected = prevSelected.filter(function(v){ 
 
    return selected.indexOf(v) === -1; 
 
    }); 
 
    if(unselected.length){ 
 
    console.log("value(s) " + unselected + " were/was unselected"); 
 
    } 
 
    prevSelected = selected; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="selectOptions" multiple> 
 
    <option>Test1</option> 
 
    <option>Test2</option> 
 
    <option>Test3</option> 
 
    <option>Test4</option> 
 
    <option>Test5</option> 
 
<option>Test6</option> 
 
</select>

+0

驚人的,我需要改變了jQuery: 的$(document)。在( '變', '#selectOption',函數(){} 然而 一切工作現在由於 –

+0

@JakeS我很高興我!可以幫助,祝你好運。 – Titus

0

this後,你可以檢查選擇的值,像這樣

var select = document.getElementById("selectOptions"); 
$('#selectOptions').change(function(){ 
    for (index in select){ 
     if ($("#selectOptions").val() === "") 
      { 
       //some code 
      } 
    } 
}); 
+0

我需要知道什麼時候一個值已成爲未被選擇和哪一個。我認爲這不會有幫助。 –

+0

@JakeS我做了一個編輯,可能會更接近你所要求的。 –