3

我正在尝试这个相当简单的代码。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,焦点仍停留在第一个文本输入上(上下文菜单也在那里弹出)。

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

4

2 回答 2

3

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

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

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

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

于 2013-02-24T22:39:00.760 回答
3

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

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

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

备选方案 2:使用 setTimeout

$(".foo").mouseup(function(){ 
    setTimeout(function () {
        $(".boo").focus();
    }, 100);  
});
于 2013-02-24T22:35:27.697 回答