【问题标题】:How can I output the just selected value from a multiple select (select2)?如何从多项选择(select2)中输出刚刚选择的值?
【发布时间】:2018-07-15 09:52:38
【问题描述】:

我尝试只输出最后选择的选项,但我遇到了困难:

$("#multipleSelectExample").select2();
$("#multipleSelectExample").on("select2-selecting", function(e) {
  var selected = $(this).val();
  console.log("You just selected Option " + selected);
});
.selectRow {
    display : block;
    padding : 20px;
}
.select2-container {
    width: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://select2.github.io/select2/select2-3.5.1/select2.js"></script>
<link href="http://select2.github.io/select2/select2-3.5.1/select2.css" rel="stylesheet"/>


<body>
    <div class="selectRow">
        <!-- Using data-placeholder below to set place holder value versus putting in configuration -->
        <select id="multipleSelectExample" data-placeholder="Select an option" multiple>
            <option value="1">Option 1</option>
            <option value="2">Option 2</option>
            <option value="3">Option 3</option>
            <option value="4">Option 4</option>
            <option value="5">Option 5</option>
        </select>
    </div>
</body>

jsfiddle.net/n4n5Y/568

【问题讨论】:

    标签: jquery select


    【解决方案1】:

    $("#multipleSelectExample").select2();
    var selectedLengthPrev = 1;
    $("#multipleSelectExample").on("change", function(e) {
      var selectedLengthNow = $('.select2-choices li').length;
      if (selectedLengthNow > selectedLengthPrev) {
        var lastSelected = $('.select2-choices li')[selectedLengthNow - 2];
        var lastSelectedVal = $(lastSelected).find('div').html();
        console.log("You just selected Option: " + lastSelectedVal);
      }
      selectedLengthPrev = selectedLengthNow;
    });
    .selectRow {
      display: block;
      padding: 20px;
    }
    
    .select2-container {
      width: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet" />
    
    
    <body>
      <div class="selectRow">
        <select id="multipleSelectExample" data-placeholder="Select an option" multiple>
                <option value="1">Option 1</option>
                <option value="2">Option 2</option>
                <option value="3">Option 3</option>
                <option value="4">Option 4</option>
                <option value="5">Option 5</option>
            </select>
      </div>
    </body>

    JSFiddle Link

    【讨论】:

    • 很遗憾,我不能使用“更改”功能,因为我只想在选择时触发而不是在删除时触发
    • 是的,工作,但是当我删除一个选项时也有一个输出
    • 啊不,它不工作。使用您的代码,输出始终是行中的最后一个。但不是最新选择的。
    • 是的,一会儿。
    【解决方案2】:

    更多活动详情请参考官方文档

    Select2 Events Documentation

    $(`#multi-select-select2`).select2();
    

    一一改变

    $(`#multi-select-select2`).on(
            "select2:select",
            function (e) {
              var data = e.params.data;
              console.log(data);
            }
          );
          $(`#multi-select-select2`).on(
            "select2:unselect",
            function (e) {
              var data = e.params.data;
              console.log(data);
            }
          );
    

    获取数组变化

    $(`#multi-select-select2`).on(
            "change.select2",
            function (e) {
              console.log($(`#multi-select-select2`).select2("data"));
            }
          );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多