Select2插件 IE下 autofocus bug的解决方法

描述:

Select2插件在IE中,当页面加载完毕后会自动的focus,弹出本来应该点击input才会有个提示语。

原因:

在select2的源码中第1849行左右,有一段监听input事件的代码,如下:

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事件,而这是在其他浏览器中不会发生的。

解决方案

写一个对于IE的兼容性方法,在判断为IE的时候将input事件替换为keydown事件。

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

转载请注明出处。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 05:06:07

Select2插件 IE下 autofocus bug的解决方法的相关文章

<img/>标签onerror事件在IE下的bug和解决方法

IE下打开网页时,会弹出“Stack overflow at line: 0”的弹框.经分析,这个bug是由于img标签的onerror事件引起的.程序中用到的代码片段如下:正常情况下显示src所指路径的图片,加载失败时显示通过img标签的onerror事件显示另一张图片,问题就出现在了这里,当另一张图片也不存在时,就造成了循环触发onerror事件,在IE下就会弹出“stack overflow”的弹框. <img src="http://img1.soufunimg.com/agent

写出几种IE6 BUG的解决方法

1.双边距BUG float引起的  使用display:inline 2.3像素问题 使用多个float和注释引起的 使用dislpay:inline -3px 3.超链接hover 点击后失效  使用正确的书写顺序 link visited hover active 4.Ie z-index问题 给父级添加position:relative 5.Png 透明 使用js代码 改 6.Min-height 最小高度 !Important 解决’ 7.select 在ie6下遮盖 使用iframe

android设计的布局在阿拉伯语下界面错乱的解决方法

(1)正在AndroidManifest.xml声明文件的application元素中,增加" android:supportsRtl=true" (2)建] androidの设计的布局在阿拉伯语下界面错乱的解决方法 (1)在AndroidManifest.xml声明文件的元素中,添加" android:supportsRtl=true" (2)修改应用程序中layout的"left/right"布局属性,改为对应的"start/end

CentOS7 下linux不能上网解决方法?,centos7 eth0 没有ip,IP突然丢失

CentOS7 下linux不能上网解决方法? 在CentOS VMware下安装好linux后,发现有时不能直接联网,特分享下总结出来的经验,希望对新手有用 工具/原料 XP系统 VMware.Workstation.v7.0以上 CentOS-5.5-i386-bin-DVD.iso 其他不同版本应该差不多 方法/步骤 虚拟机安装就不说了,从安装linux后测试发现不能联网,可以先终端重启下网卡 失败如图:   找到点击选择setting   在network Adapter选中,右侧是否是

无法录制下拉菜单的解决方法

QTP默认录制方式无法录制下拉菜单,需修改设置后再录制 修改设置如下: 1.Record-> web event recording configuration -----custom settings... 展开Web objects 2.选中webelement,点击event -> add -> .并确定在record栏内,状态是enabled 3.重新录制你的脚本 4.录制完成后,执行脚本,若回放失败,是因为脚本只录制了鼠标的 事件,却没有录制click事件,所以脚本录制完后要手

高DPI下界面错乱的解决方法和原理

来源: http://bbs.csdn.net/topics/370177760 我在win32 + c写的界面中解决办法,就是把字体的字号给固定了,这样做的结果就是,不管dpi是否有改变,界面中控件的文字的字号不变,就不会出现文字换行的情况. 但像菜单文字的字号就变大了,combobox(右三角),checkbox(选择框)变大一点点,显的有点不协调. 但至少不影响使用. 下面是判断当前系统的dpi,然后重置字体的字号. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法

自从Android3.0引入了Fragment之后,使用Activity去嵌套一些Fragment的做法也变得更加流行,这确实是Fragment带来的一些优点,比如说:Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI,更重要的是Fragment解决了Activity间的切换不流畅,实现了一种轻量及的切换,但是在官方提供的android.support.v4包中,Fragment还是或多或少的存在一些BUG,今天就与大家分享一下这些BUG和解决方

IE6下fixed失效的解决方法

在网上找了好久,终于找到一种亲测有效的解决方法. <!--[if IE 6]> <script type="text/javascript"> (function($) { jQuery.fn.Fixed = function(options) { var defaults = { x:0, y:0 }; var o = jQuery.extend(defaults, options); var isIe6 = !window.XMLHttpRequest; v

Arduino下LCD1602综合探究(中)——如何减少1602的连线,LiquidCrystal库,LiquidCrystal库中bug的解决方法

一.前言: 上文中,笔者系统的阐述了1602的两种驱动方式,并简单的提到了Arduino的LiquidCrystal库.本文紧接上文,对以下两个问题进行更加深入的探讨:如何能够使1602对Arduino的端口占用降到最少?LiquidCrystal库到底应该如何学习?在Arduino下LCD1602综合探究(下)中,笔者拟介绍一个1602的综合性实验,以期对前文的内容加以综合应用和总结.闲话少说,下面开始进入正文. 二.减少1602对Arduino的端口占用 <1>不使用I2C 在上文中,笔者