how to detect copy and paste in javascript?

forms, html, javascript

Solution

You could disable `ctrl+v` combination and `right click` as well.

for IE, you may tap into following event handlers:

onpaste="return false;" 
oncut="return false;" 
oncontextmenu="return false;" 
oncopy="return false;".

Here is a workaround for all browsers:

function noCTRL(e) {
      var code = (document.all) ? event.keyCode : e.which;
      var ctrl = (document.all) ? event.ctrlKey : e.modifiers & Event.CONTROL_MASK;
      var msg = "Sorry, this functionality is disabled.";
      if (document.all) {
        if (ctrl && code == 86) {
          //CTRL+V
          alert(msg);
          window.event.returnValue = false;
        } else if (ctrl && code == 67) { 
         //CTRL+C (Copy)
          alert(msg);
          window.event.returnValue = false;
        }
      } else {
        if (ctrl == 2) {
          //CTRL key
          alert(msg);
          return false;
        }
      }
    }

In HTML section, your fields would look like:

Email :<input name="email" type="text" value=""/><br/>
Password :<input name="password" type="password" value=""/><br/>
Confirm Email :<input name="email" type="text" value="" onkeydown="return noCTRL(event)"/>    
Confirm Password :<input name="password" type="password" value="" onkeydown="return noCTRL(event)"/>

I don't think user can copy password fields if input type is `password`

Hope this helps.

Note:

- Disabling JavaScript in browser will let users do whatever they want

- Always Keep this in mind: respect user's freedom.

Problem

I have two fields, one is `emailid` and another is `password` in my form. I want to prevent the user from pasting into those fields. They should be forced to enter manually, like Google Forms.

Original source

Related problems