【问题标题】:Select2 Select Function Shows Previous ValueSelect2 选择函数显示以前的值
【发布时间】:2016-11-26 23:19:44
【问题描述】:

我使用Select2 作为搜索下拉菜单,但是当我在列表中选择一个项目时,它一直显示之前的值。

我初始化 Select2 下拉菜单:

$(document).ready(function() {
  $(".ordersSelect").select2();
});

然后设置所有选项:

<select class="ordersSelect" style="width:75%;">
  <option value>Select a priority...</option>
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
</select>

假设我从这段代码中选择了 1,我的控制台:

// when value is selected
$('.ordersSelect').on('select2:selecting', function(e) {
  var prioritySelection = $('.ordersSelect').select2('data')[0].text;
  console.log("DATA: " + prioritySelection);
});

将显示“数据:选择优先级...”。如果我然后选择说“3”,控制台将显示“数据:1”。

它继续显示上一个选择的值。当我将“select2:selecting”更改为“select2:selected”时,控制台消息永远不会出现。

我在这里做错了什么..?

【问题讨论】:

    标签: javascript jquery jquery-select2 select2 jquery-select2-4


    【解决方案1】:

    首先,你绝对应该使用select2:select
    select2:selecting在结果被选中之前被触发..

    $('select').on('select2:select', function (evt) {
      // Do something
    });
    

    其次,您可以从事件本身获取数据对象/值。 检查evt.params.data 属性。

    【讨论】:

      【解决方案2】:

      得到它使用:

      $('.ordersSelect').select2().on("change", function(e) {
        var obj = $(".ordersSelect").select2("data");
        console.log("change val=" + obj[0].id);  // 0 or 1 on change
      });
      

      如果有人知道更好的方法,我肯定会听到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 2013-02-04
        • 2017-03-02
        • 2018-07-11
        • 2019-05-22
        • 1970-01-01
        相关资源
        最近更新 更多