I'm trying to detect when the user presses Ctrl + V in JavaScript.
jQuery(document).on('paste', function() {alert('text pasted!')})
It works well with Chrome (v37). But it does not work with Firefox (v32) and IE (v11), as you can try on this jsfiddle:
/
Any idea what I'm doing wrong?
EDIT - 2014-09-17 - need the clipboard content.
I cannot just rely on key detection, because I need the clipboard content which is only available through a paste event (there is no clean other way to access it). In this JSFiddle, I get the event and display the text (works on Chrome only)
/
My final goal is to get an image from the clipboard and directly send it to the server.
I'm trying to detect when the user presses Ctrl + V in JavaScript.
jQuery(document).on('paste', function() {alert('text pasted!')})
It works well with Chrome (v37). But it does not work with Firefox (v32) and IE (v11), as you can try on this jsfiddle:
http://jsfiddle/7N6Xq/410/
Any idea what I'm doing wrong?
EDIT - 2014-09-17 - need the clipboard content.
I cannot just rely on key detection, because I need the clipboard content which is only available through a paste event (there is no clean other way to access it). In this JSFiddle, I get the event and display the text (works on Chrome only)
http://jsfiddle/7N6Xq/412/
My final goal is to get an image from the clipboard and directly send it to the server.
Share Improve this question edited Oct 22, 2014 at 8:39 ROMANIA_engineer 56.7k30 gold badges208 silver badges205 bronze badges asked Sep 16, 2014 at 15:33 Vincent TallierVincent Tallier 711 gold badge1 silver badge4 bronze badges 2- 1 You should be able to get your answers from the bination of these two threads: stackoverflow./questions/10671822/… (detecting the "Ctrl" key) & stackoverflow./questions/10655202/… (detecting key binations) – talemyn Commented Sep 16, 2014 at 15:40
- 1 mouse trap works well, if you just want to use a small library. – royhowie Commented Sep 16, 2014 at 16:35
3 Answers
Reset to default 7This is my JSFIDDLE. It worked well on Chrom & Firefox &IE10 Here is code:
$(document).keydown(function (event) {
if (event.ctrlKey && event.keyCode == 86) {
alert("!");
}
});
You can't just paste on displayed text. You have to create an input area where they can paste, an <input>
or a <textarea>
or similar. It will inherit the onpaste
handler so you don't have to set it directly on the input element, but it won't fire outside of one in most browsers.
See fiddle here: http://jsfiddle/Lznvm8x9/
I'm on a Mac, so I can't test IE, but the above works in Firefox, as well as Safari and Opera.
If you want to detect control-V as a key chord independent of the actual paste functionality, you can use keydown
/keyup
events, but then you hit the cross-platform issues - do you want it to still be control-V on a Mac, where paste is usually mand-V, etc.
Use keydown
and keyup
+ codes for keys instead of your actual approach.