2013-03-12 49 views
0

我尝试了这个简单的代码,该代码在第一次检测到右键单击时应该将焦点移到另一个文本框,以便任何后续的paste事件都会使文本被粘贴到第二个框中:粘贴事件在Opera 11和更低版本中无法正常工作

<!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);替换代码,但错误依然存在。

谁能告诉我我该如何解决这个问题,以便将文本粘贴到第二个文本框中? (一检测mouseup,检查它是否是一个正确的点击通过event.which,如果是的话,转移焦点 - 是啊,我这样做太,一样的结果!)

+0

待办事项你真的需要支持Opera 11吗?它快速消失。 – Bergi 2013-03-12 17:55:24

+0

是的,老式的客户.. :( – SexyBeast 2013-03-12 17:56:04

+0

我不明白你的要求的全部范围在这里。你想让它有可能输入到'真正'的盒子,但如果有东西被粘贴,它应该进入'paste'box?或者是否所有输入'real'都输入'paste'?为什么你首先有两个盒子? – hallvors 2013-03-18 15:02:59

回答

0

作为替代解决方案...

$("#real").bind("contextmenu",function() { 
    $("#paste").val($(this).val()); 
    $(this).val(''); 
}); 
+0

不,我不希望粘贴的文本在第二个文本框(这是不可见的.. :))经过一些过滤之前, – SexyBeast 2013-03-12 17:41:59

相关问题