2013-03-12 67 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

相關問題