Select2插件在IE中,当页面加载完毕后会自动的focus,弹出原本应该点击input才会有个提示语。javascript
在select2的源码中第1849行左右,有一段监听input事件的代码,以下:java
this.$selection.on('keyup.search input', '.select2-search--inline',function (evt) { self.handleSearch(evt); });
能够看到这里是使用HTML5的input事件去监听input中值的变化的,并无使用传统的change或者keydown等事件。浏览器
缘由就出在这里,input事件在IE中是有bug的。在IE中,若是一个input带有placeholder属性,那么IE会自动触发这个input的input事件,而这是在其余浏览器中不会发生的。ide
写一个对于IE的兼容性方法,在判断为IE的时候将input事件替换为keydown事件。this
var isIE = (function () { var ua = window.navigator.userAgent.toLowerCase(); if (ua.indexOf("msie") > 0 || ua.indexOf("trident") > 0 ) { return true; } else { return false; } }()); var input_event = !isIE ? 'input' : 'keydown'; this.$selection.on('keyup.search '+input_event, '.select2-search--inline',function (evt) { self.handleSearch(evt); });
文章做者:forevercjl
文章原文csdn连接:www.foreverpx.cn
转载请注明出处。spa