0

我正在尝试这个简单的代码,它应该在第一个检测到右键单击时将焦点转移到另一个文本框,以便任何后续paste事件都会将文本粘贴到第二个框中:

<!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>

在 Opera 12 以上版本中,它运行良好。但是,在 11 及以下版本中,即使在右键单击第一个文本框时焦点确实转移到了第二个文本框,粘贴事件也会将文本粘贴到第一个文本框中(焦点立即转移到第二个文本框,在其自己的)。我试图用 替换代码setTimeout(function() { $("#paste").focus(); },0);,但错误仍然存​​在。

谁能告诉我如何解决这个问题,以便将文本粘贴到第二个文本框中?(检测 a mouseup,检查是否是右键单击event.which,如果是,则转移焦点 - 是的,我也这样做了,结果相同!)

4

1 回答 1

0

作为替代解决方案...

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