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