0

私はこの単純なコードを試しています:

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

最初のテキストを右クリックすると、2番目のテキスト入力にフォーカスが移動することになっています。これはWindowsのブラウザでは正常に機能しますが、RHEL5Firefoxでチェックインしている間は発生せず、最初のブラウザに焦点が当てられたままになります。

ロジックを次のように変更しようとしました。

$(".foo").click(function(e) {
   if (e.which == 3)
     $(".boo").focus();
});

それでも機能しません。ただし、最後のコードをに変更するとif (e.which == 1)...、クリックするとフォーカスが移動し、どういうわけか右クリックにはなりません。この問題はRHEL5、Firefox、およびFirefox、MacのChromeで発生しています。ただし、MacのSafariとOperaでは正常に動作します。

どうすればこれを修正できますか?

4

1 に答える 1

1

まず、入力クラスをIDに変更します。ここでは、より適切です。

<input type="text" id="foo" /><input type="text" id="boo" />

次に、これを試してください。単純なJavacriptで、jQueryは必要ありません。

document.getElementById("foo").onfocus = function(){
  document.getElementById("boo").focus();
}

編集:OPの元のコードでタイムアウトを使用することを含む実用的なソリューション:

setTimeout(function(){$(".boo").focus()}, 0)

タイムアウトを使用すると、上記のコードでも同様に機能します。

于 2013-02-27T12:52:37.363 に答える