IE6IE9兼容性问题列表及解决办法_补充之五:在IE9下, disabled的文本框内容被选中后,其他控件无法获得焦点问题

先看一段Htm代码,里面一个disabled的文本框,一个普通可写的文本框,还有一个按钮,非常简单,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
  Disabled Input: <input type="text" id="b1" value="asldfjasldfa" disabled="disabled" ></input><br />
  Non-Disabled Input: <input type="text" id="b2" value="asldfjasldfa"></input>
  <input type="button" id="butt1" name="butt" value="关闭" onclick="window.close()" />
</body>
</html>

运行出来的页面如下:


通过实际测试发现,在IE9下,鼠标一旦进入disabled的文本框,比如在里面拖拽鼠标并选中一些内容,然后再想把鼠标挪开,比如挪到第二个文本框中,或者比如点击以下关闭按钮,就会发现,办不到了,似乎disabled文本框的焦点永远无法离开了,其他文本框或者按钮永远获得不到焦点,除非用Tab键切换,或者干脆切换到其他软件界面后再转回来,这时别的控件才可以被点中。

经过测试,在IE6, 7, 8, 10上都无此问题。 

经过咨询获悉,发现这确实是IE9的一个bug。

如何解决呢?下面是我们摸索出来的几个方法,抛砖引玉一下:

1.升级到IE10。

升级到IE10,自然就解决了这个问题。因为既然IE10既然已经解决这个问题了,那么IE9就应该不会再为这个bug专门发布补丁修复程序了。


2.鼠标双击一下页面其他部分,就可以把焦点从disabled文本框中解脱出来了。


3.写脚本禁止disabled文本框被选择也是一个方法,但前提是文本框既然已经disabled了,就不接受任何js事件了,那么,只能在其父元素上搞这个动作了,比如在disabled文本框外再套个东东,在那上面绑定js事件,禁止此区域被鼠标进入或选择,这样,相应的,其内部的disabled文本框也就不能被选择了,那么,这个文本框焦点无法离开的问题也就不存在了。

 
不知道诸位是否遇到过这个问题,是否有更好的解决方法? 

作者:BobLiu
邮箱:lzd_ren@hotmail.com
出处:http://www.cnblogs.com/liuzhendong
本文版权归作者所有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/liuzhendong/p/2732234.html