我正在使用引导选择插件(http://silviomoreto.github.io/),并且正在处理更改事件“changed.bs.select”以捕获所有选择更改。根据https://silviomoreto.github.io/bootstrap-select/options/上的文档,“该事件在选择的值更改后触发。它通过事件clickedIndex,newValue,oldValue。”

我想了解newValue和oldValue的确切含义。因为在新值是true且oldValue是false的情况下,总是这样。

这是一个 fiddle ,用以说明我的观点。

https://jsfiddle.net/muojdbh9/

HTML

<select class="selectpicker">
  <option>Mustard</option>
  <option>Ketchup</option>
  <option>Relish</option>
</select>

<div class="res">
Waiting for a change event
</div>

jQuery
$(".selectpicker").on('changed.bs.select', function (event, clickedIndex, newValue, oldValue) {
    $("div.res").html("newValue: " + newValue + "<BR>oldValue: " + oldValue);
});

最佳答案

这不是错误。看来newValueoldValue的行为不符合您的预期。newValueoldValue都以相同的方式操作。
您看到的 bool 值是指所选选项的先前状态和新状态。

代表选中的true和代表未选中的false

如果新选择的选项以前未处于选定状态,则它将返回:
newValue: trueoldValue: false
如果先前选择了所选选项,则它将返回,如下所示:
newValue: falseoldValue: true,因为它取消了选择元素。

这是caseyjhol在这里解决的:

https://github.com/silviomoreto/bootstrap-select/issues/1378/#issuecomment-216393099

09-11 18:16