0

最初に右クリックが検出されたときにフォーカスを別のテキストボックスに移動することになっているこの単純なコードを試しています。これにより、後続のpasteイベントによりテキストが2番目のボックスに貼り付けられます。

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $("#real").bind("contextmenu",function() {
           $("#paste").focus();
        });
    });
</script>
</head>
<body>
    <input type = 'text' sh = '0' right = '0' id = 'real' />
    <input type = 'text' id = 'paste' />
    <p>Dummy</p>
</html>

バージョン 12 以上の Opera では、正常に動作しています。ただし、11 以下では、最初のテキスト ボックスを右クリックするとフォーカスが 2 番目のテキスト ボックスに移動しても、貼り付けイベントは最初のテキスト ボックスにテキストを貼り付けます (フォーカスはすぐに 2 番目のテキスト ボックスに移動します)。自分の)。コードを に置き換えようとしましたがsetTimeout(function() { $("#paste").focus(); },0);、それでもエラーが解決しません。

テキストが2番目のテキストボックスに貼り付けられるように、これを修正する方法を誰か教えてもらえますか? ( を検出しmouseup、それが右クリック スルーかどうかを確認しevent.which、そうであれば、フォーカスを移動します。ええ、私もそれを行いましたが、同じ結果です!)

4

1 に答える 1

0

代替ソリューションとして...

$("#real").bind("contextmenu",function() {
    $("#paste").val($(this).val());
    $(this).val('');
});
于 2013-03-12T17:39:59.847 に答える