Multi Select DropDown-获取当前选定的选项

时间:2016-03-14 15:50:51

标签: jquery

我有一个多选,我想知道用户点击了什么选项。我在网上搜索但是没有得到任何体面的答案。我不想要一个所有选定选项的数组,只是用户点击的选项

例如

选项A. 选项B. 选项C

如果会员点击选项A我想获得选项A,如果会员然后选择选项B,我想获得选项B,而不是选项A和B.

我已经看到他们说使用点击事件的答案,但进一步的研究表明,使用多个选项时,点击事件不会触发,我必须在更改时使用。

我之所以需要这个,是因为我们有以下要求

选项A. 选项B. 选项C. 选项无

如果成员选择A,然后选择B,然后选择无,我需要取消选择所有选项,并选择“无”。

如果选择None,并且成员决定选择选项A,则需要取消选择None,并且需要选择选项A.

我能看到实现这一目标的唯一方法是知道该成员点击了哪个选项,如果为None,则取消选择all,然后选择None,否则,确保在选择时取消选择。

4 个答案:

答案 0 :(得分:0)

选择当前选项(动态):

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

选择当前选项(无动态):

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

答案 1 :(得分: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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我使用的多选是silvio moretto的bootstrap-select

出于某种原因,它正在抨击on -click事件。

我去了他的网站,发现了以下事件

$('#myMulti')。on('changed.bs.select',function(evt,clickedIndex){ 第二个参数给了我当前选择的索引,这是我需要的

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

答案 3 :(得分:0)

$("#mymulti").on('change', function(e) {
  e.currentTarget.value //should return you the currently selected option
});