2016-04-29 133 views
6

我使用的是一個jQuery插件:bootstrap-select.js我的HTML是select(multiple) - >選項。我想在用戶選擇或取消選擇該選項時獲取當前點擊的選項值。Bootstrap-選擇點擊獲取點擊值

例子:用戶選擇項目4 = console.log項目4.然後用戶也選擇項目2 = console.log項目2.目前我得到項目4,項目2 ...他們總是在一個數組而不是個人。

我的最終目標是根據用戶選擇的內容在頁面上顯示和隱藏div。將會有多個選擇選項字段。

HTML代碼:

<fieldset class="dreamT"> 
    <select name="team" id="team" multiple class="dropdown selectpicker show-menu-arrow show-tick form-control" title="Pelaajat" data-width="100%" data-size="auto" multiple data-selected-text-format="count > 2"> 
    <optgroup> 
     <option value="item 1">Item 1</option> 
     <option value="item 2">Item 2</option> 
     <option value="item 3">Item 3</option> 
     <option value="item 4">Item 4</option> 
     <option value="item 5">Item 5</option> 
     <option disabled value="item 6">Item 6</option> 
    </optgroup> 
    </select> 
</fieldset> 

JS代碼:

$("select#team").on("change", function(value){ 
    var This  = $(this); 
    var selectedD = $(this).val(); 
    console.log(selectedD); 
}); 

電流輸出:["item 1", "item 3", "item 4", "item 5"]

插件網站:bootstrap-select

+0

你試過'$(「選擇#團隊「)。on(」click「,function(事件,價值)'? – Osuwariboy

+0

@Osuwariboy不?你什麼意思?我將如何實現? :D – Bonttimo

回答

7

正如描述的bootstrap-select events可以使用changed.bs.select事件。

此事件在選擇值更改後觸發。它通過以下4個參數:

  • 事件
  • clickedIndex
  • NEWVALUE
  • 屬性oldValue

$(function() { 
 
    $("#team").on("changed.bs.select", function(e, clickedIndex, newValue, oldValue) { 
 
    var selectedD = $(this).find('option').eq(clickedIndex).text(); 
 
    $('#log').text('selectedD: ' + selectedD + ' newValue: ' + newValue + ' oldValue: ' + oldValue); 
 
    }); 
 
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/css/bootstrap-select.min.css"> 
 
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/bootstrap-select.min.js"></script> 
 

 

 
<fieldset class="dreamT"> 
 

 
    <select name="team" id="team" multiple class="dropdown selectpicker show-menu-arrow show-tick form-control" title="Pelaajat" data-width="100%" data-size="auto" multiple data-selected-text-format="count > 2"> 
 
     <optgroup> 
 
      <option value="item 1">Item 1</option> 
 
      <option value="item 2">Item 2</option> 
 
      <option value="item 3">Item 3</option> 
 
      <option value="item 4">Item 4</option> 
 
      <option value="item 5">Item 5</option> 
 
      <option disabled value="item 6">Item 6</option> 
 
     </optgroup> 
 
    </select> 
 
</fieldset> 
 
<p id="log"></p>

+0

這個工作,但只有當他們的價值和文本匹配。在我的情況下,他們不會因此不幸的是不工作,我仍然試圖找到一個解決方案。 –

+1

@luke_mclachlan嗨盧克,你可以看看[小提琴](https://jsfiddle.net/9jugo0rw/2/)?您可以選擇文本或值。我不明白你在找什麼。不要試圖澄清你的問題。非常感謝。 – gaetanoM

+0

我非常抱歉,我沒有看到你也捕獲了原始值以及文本。回答UPVOTED(對不起,因爲我一直在尋找這個解決方案)。我可以看到你做了什麼,我從來沒有聽說過eq()過濾器,這是一個非常聰明的解決方案,非常感謝你! –

1

或者只是對選項元素的事件......

$("option").on("click", function(value){ 
     var This = $(this); 
     var selectedD = $(this).val(); 
     console.log(selectedD); 
}); 

https://jsfiddle.net/adjavaherian/ssqz4sh8/

+0

這不適用於插件。不知何故,它什麼都不返回我不知道爲什麼,但如果我使用點擊它什麼都不做。 – Bonttimo

+1

這是因爲點擊沒有發生在選項上,它發生在代表它的範圍 –