1

我正在尝试这段代码。它的作用是当有人右键单击第一个文本框时,将焦点转移到第二个文本框,这样如果他Paste从上下文菜单中选择选项,文本就会粘贴到第二个文本框中。一个paste事件已附加到第二个框以提醒Foo

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
$(document).ready(function(){

  $('.foo').contextmenu(function() {
      $('.boo').select();
      return true;
  });
$(".boo").bind("paste",function() { alert("Foo"); });
});
</script>
</head>
<body>
<input type = 'text' class = 'foo' />
<input type = 'text' class = 'boo' />
</body>
</html>

它适用于除 Opera 之外的所有浏览器。当您右键单击并在第一个框中粘贴一些文本时,所有这些浏览器都会弹出警报。在 Opera 中,如果直接在第 2 个框中粘贴一些文本,就可以弹出警告。但是,如果您通过第一个框执行此操作,即在右键单击第一个框时将焦点转移到第二个框,以便剪贴板文本粘贴到第二个框,即使您可以清楚地看到它也不会弹出警报第二个框获得了焦点,文本被粘贴在那里就好了。谁能告诉我是什么问题,以及如何解决?

4

1 回答 1

1

正如您在这个 fiddle中看到的那样,Operapaste在被右键单击的元素上触发事件(同时插入焦点移动到的文本)。但是,正如您在此处看到的,该input事件会在您预期的元素上触发。

谁能告诉我是什么问题,以及如何解决?

您在粘贴操作(两次单击)期间移动选择/焦点,这使用户和浏览器都感到困惑:-)。我不确定如何解决此异常,但您当然不希望仅在通过上下文菜单完成粘贴时才将粘贴移动到另一个输入。

于 2013-02-25T13:31:31.910 回答