Bootstrap select 没有 return clickedIndex on changed.bs.select

Bootstrap select doesn't return clickedIndex on changed.bs.select

我正在使用 Bootstrap Select 插件。

<div class="form-group col-md-6">
    <select class="selectpicker form-control" id="veicoli" data-style="btn-transparent" data-title="Veicoli" data-selected-text-format="static" data-live-search="true" multiple>
        <option value="1">EA018YE</option>
        <option value="11">FM088KP</option>
        <option value="17">DT590LW</option>
        <option value="21">DB814RZ</option>
        <option value="33">DM408DG</option>
        <option value="40">EH942GJ</option>
    </select>
</div>

I select 选项以编程方式使用:

$(document).ready(function() {
  $('#veicoli').selectpicker('val', data);
  $('#veicoli').selectpicker('refresh');
}

其中 data 是一个数组:

["11", "33"]

上面的代码在 bootstrap-select 中正确地 select 选项,但是触发的事件 changed.bs.select,我是这样定义的:

$(document).on('changed.bs.select', '#modale-dettagli #veicoli', function(e, clickedIndex, isSelected, previousValue) {
  console.log('e: ' + e);
  console.log('clickedIndex: ' + clickedIndex);
  console.log('isSelected: ' + isSelected);
  console.log('previousValue: ' + previousValue);
}

没有按预期工作,因为 clickedIndexundefined

这是上面事件的输出:

e: [object Object]
clickedIndex: undefined
isSelected: undefined
previousValue: undefined

请注意,当(使用鼠标)单击相同的选项时,相同的事件会正常工作

编辑: 顺便说一句,我现在遇到的问题是早期版本中的错误 val() method doesn't fire changed.bs.select

编辑 2: 我发现我可以使用 this.selectedIndex 获取 selected 选项的索引(而不是使用函数参数 clickedIndex) 并且 "code trick" 可以完成工作

clickedIndex 有意仅在触发点击事件时返回(当手动 select 选择一个选项时)。文档可能应该更新以反映这一点,但是在使用 val() 方法时很难正确实施,如在多个 select 的情况下,可以一次更改多个值(所以很难确定哪些元素会被考虑 "clicked")。但是,previousValue 应该 被返回,事实上它不是一个错误。这将在 bootstrap-select v1.13.9 中修复,不过 (https://github.com/snapappointments/bootstrap-select/issues/2244).