【问题标题】:Text Input focus anomaly in IE9IE9中的文本输入焦点异常
【发布时间】:2013-02-24 22:16:21
【问题描述】:

我正在尝试这个相当简单的代码。只要第一个有mouseup,它就应该将焦点转移到相邻的文本输入:

<!DOCTYPE html>
<html>  
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">   
    </script>
    <script>
      $(document).ready(function() {
        $(".foo").mouseup(function() {
          $(".boo").focus();
        });
      });   
    </script>
  </head> 
  <body>
    <input type='text' class='foo' />
    <input type='text' class='boo' />
  </body>    
</html>

在除了IE9(我不敢在IE8或以下测试它!)之外的所有浏览器中,左键和右键都可以正常工作(对于右键mouseup,上下文菜单仍然弹出即使焦点转移到第二个输入,也可以在第一个输入上向上)。但是,在IE9 中,焦点仍停留在第一个文本输入上(上下文菜单也会在那里弹出)。

有什么办法可以解决,让焦点转移到第二个?

【问题讨论】:

  • 你可以尝试在纯 JS 中这样做,看看它是否有效?所以 document.getElementById(element).focus();
  • 让我试试。给我两分钟...
  • 不。正如预期的那样,它不起作用..:(

标签: javascript jquery html internet-explorer-9


【解决方案1】:

.select() in ie 应该可以工作:

http://jsfiddle.net/n4hGC/5/

$(document).ready(function(){
  $('.foo').mouseup(function() {
    $('.boo').focus();
  });
  $('.foo').contextmenu(function() {
      $('.boo').select();
      return false;
  });
});

还通过返回 false 来处理上下文菜单。 希望有所帮助!

【讨论】:

  • 嗯,这行得通。是否有 jQuery 等价于 contextmenu 事件?
  • 非常感谢,伙计!你拯救了我的一天!
  • 老兄,另外一个问题,IE8也支持吗?
  • 快速模拟了一个非 jquery 版本并在 ie7,8 标准模式 (F12) 下运行并工作,所以应该没问题,你应该检查一下
  • 你能告诉我 jQuery 版本是否也能正常工作吗?我没有用于测试的 IE8..:(
【解决方案2】:

您可以尝试其中一种选择吗?他们过去曾在 IE8 中为我工作过,他们可能对你也有效。

备选方案 1:先模糊再聚焦

$(".foo").mouseup(function(){
    $(".boo").blur();  
    $(".boo").focus();
});

备选方案 2:使用 setTimeout

$(".foo").mouseup(function(){ 
    setTimeout(function () {
        $(".boo").focus();
    }, 100);  
});

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2021-10-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多