2013-02-24 28 views
3

我正在嘗試這個相當簡單的代碼。它應該重點轉移到鄰近的文字輸入,只要有mouseup放在了第一位:文字在IE9中輸入焦點異常

<!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中,焦點仍然保留在第一個文本輸入上(上下文菜單也彈出)。

有什麼辦法可以解決它,讓焦點轉移到第二個?

+0

你可以嘗試在純JS中做這件事,看看它是否有效?所以document.getElementById(element).focus(); – karancan 2013-02-24 22:28:41

+0

讓我試試。給我兩分鐘... – SexyBeast 2013-02-24 22:29:55

+0

沒有。它不工作,如預期的那樣。:( – SexyBeast 2013-02-24 22:30:55

回答

3

。選擇()中即應該工作:

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

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

也通過返回false來處理上下文菜單。 希望有所幫助!

+0

那麼,這是行之有效的。有一個jQuery相當於'contextmenu'事件 – SexyBeast 2013-02-24 22:40:52

+0

還好還好,編輯確實給我的答案 – SexyBeast 2013-02-24 22:41:51

+0

編輯:?!!!轉換回你的jQuery原本 – 2013-02-24 22:42:03

3

你可以嘗試下列其中一種選擇嗎?他們過去在IE8中爲我工作過,他們可能會爲你工作。

替代品1:模糊然後集中

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

替代方法2:使用的setTimeout

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

已經嘗試了第一個,沒有工作。現在嘗試第二個,相同.. – SexyBeast 2013-02-24 22:37:27

+0

setTimeout爲我工作。運行IE9。 – scottndecker 2013-11-07 18:26:06