在IE下某页面的iframe中存在input输入框而且这个iframe有scroll滚动条.一开始聚焦在input输入框时,然后鼠标点击iframe的scroll滚动条,这个时候input应该失去焦点,而事实上虽然input的onblur事件已经触发表示input已经失去焦点,但input内的光标仍然存在,此时敲击键盘,文字仍然可以输入到input中.但是由于事实上input已经失去焦点,所以后面不会触发键盘的keydown,keyup事件.这个问题在firefox下不存在.这个bug产生的问题是,我现在在input上实现一个联想输入,需要监听input上的keydown,keyup.由于上面的bug,导致点击scroll滚动条后,联想功能不正常.请问有没有什么方法可以规避,我试过onblur时,通过js代码将焦点focus在其它元素上,但是除非focus在另外一个输入框,否则原input输入框的光标仍然不会消失.

解决方案 »

  1.   

    "开始聚焦在input输入框时,然后鼠标点击iframe的scroll滚动条,这个时候input应该失去焦点......"不知道lz用那个版本的IE,我这里用IE7没有出现你说的点击IFrame的scroll触发input的onblur事件!
      

  2.   

    IE6,IE7都有问题.这个bug,就是可以触发onblur,但是input上的光标又没有消失.
      

  3.   

    楼主也知道了一种解决办法,能不能试试将焦点focus在隐藏域里面呢。。
      

  4.   

    我的是IE6,没有出现lz所说的问题
      

  5.   

    补充说明一下,这个问题出发的scroll不是iframe页面内的scroll. 也就是说这个scroll与输入框不在同一个window下,就会有这个问题。另外To raymondhuang:
      隐藏的元素不能获得焦点。
      

  6.   

    在Input输入框的OnBlur事件中禁止输入,即Disabled=True,在OnClick事件中允许输入,即Disabled=False,然后Focus即可避免。
      

  7.   

    估计是:联想输入的问题!没发现IE有这个问题,在网站的后台中我都用iframe也用过focus事件,作了几年也没出现过
      

  8.   

    在 form 外面设一个不用的 text input,宽高都为1,很小,基本不影响效果,在你的 blur 函数设这个 text 获得焦点。<SCRIPT LANGUAGE=javascript>
    <!--
    function checkbox1_onclick() {
    text1.focus();
    }
    //-->
    </SCRIPT><INPUT id=text1 style="WIDTH:1; HEIGHT:1"  name=text1>
    <INPUT type=checkbox onclick="checkbox1_onclick()">