文本在IE9中输入焦点异常

时间:2013-02-24 22:16:22

标签: javascript jquery html internet-explorer-9

我正在尝试这个相当简单的代码。只要第一个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 ,即使焦点转移到第二个输入,上下文菜单仍然会弹出第一个输入。但是,在{{1}}中,焦点仍然在第一个文本输入上(上下文菜单也会弹出)。

有没有办法解决它,以便焦点转移到第二个?

2 个答案:

答案 0 :(得分:3)

你能尝试其中一种替代方案吗?他们过去曾在IE8中为我工作,他们可能会为你工作。

备选方案1:模糊然后聚焦

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

备选方案2:使用setTimeout

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

答案 1 :(得分:3)

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

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

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

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