先看一段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="关闭" οnclick="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文本框也就不能被选择了,那么,这个文本框焦点无法离开的问题也就不存在了。
不知道诸位是否遇到过这个问题,是否有更好的解决方法?