Javascript 引导多选模糊事件未触发

Javascript 引导多选模糊事件未触发,javascript,twitter-bootstrap,knockout.js,Javascript,Twitter Bootstrap,Knockout.js,我试图在用户完成一个选择并从引导式多选下拉列表中移除之后做一些逻辑 我试着加入模糊事件: <select id="select1" multiple="multiple" class="form-control" data-bind="options: availableValues, selectedOptions: selectedValues, multiselect: { includeSelectAllOption: true }, event: { bl

我试图在用户完成一个选择并从引导式多选下拉列表中移除之后做一些逻辑

我试着加入模糊事件:

      <select id="select1" multiple="multiple" class="form-control" data-bind="options: availableValues, selectedOptions: selectedValues, multiselect: {
    includeSelectAllOption: true
  }, event: { blur: $root.onBlur}">
      </select>  
但它从来没有起作用。我甚至尝试在没有$root.onBlur的情况下直接设置事件绑定,只设置blur:onBlur,但没有效果

下面是一个JS提琴示例:

我错过什么了吗?还是模糊事件不适用于引导多重选择


我想挂接blur的原因是,在选择了所有项目之后,我有一些后端逻辑要通过Ajax来完成。如果我订阅ObservalArray更改,它将触发我对添加的每个项目的后端调用,这不是我想要的。

下面是一个工作示例-当用户“制表符”转到第二个输入时,模糊事件回调将显示选择了多少个元素

var ViewModel=函数{ this.availableValues=ko.observatarray[选项A、选项B、选项C]; this.selectedValues=ko.observearray; this.onBlur=函数{ alertBLUR:+this.selectedValues.length+所选元素; } }; ko.applybindingsnewviewmodel;
Bootstrap实际上隐藏了原始的select元素,并在其位置显示了一个div,因此select上的模糊永远不会被击中,因为它一开始没有被聚焦

我认为,因为引导控件使用div,所以可能根本不可能支持模糊,因为div通常不可聚焦。有两种变通方法,但在这种特殊情况下可能不起作用。看

一个选项-你可以限制你的ObservalArray,这样订阅就不会在每次选择一个选项时立即启动。这也将减少后端调用,但不能保证在用户完成之前不会触发


仅供参考,以下是开发者github页面的回复


基本上是说,你应该调用onDropdownHide函数,它会触发一种模糊的multiselect插件

引导实际上隐藏了原始的select元素并在其位置显示一个div,因此select上的模糊永远不会被击中。如果你想使用引导控件,你可能需要一个自定义绑定来将事件附加到引导创建的元素上,而不是原始的select。不幸的是,他的绑定处理程序似乎不支持Blur。你可以请求他添加支持,或者你可以从js文件中复制处理程序,并尝试自己修改它以添加模糊事件支持。区别在于此代码段没有使用bootstrapt这是真的-没有注意到使用了其他插件。正如Jason所建议的,最好的方法是定制绑定。这非常有效。谢谢你的推荐!服务器现在只接收到一个呼叫
onBlur: function(){
    alert('OnBlur');
}
this.selectedValues = ko.observableArray().extend({ rateLimit: { timeout: 500, method: "notifyWhenChangesStop" } });

this.selectedValues.subscribe(function() {
    alert("BLUR: " + this.selectedValues().length + " elements selected");
});