如何在javascript中检测复制和粘贴?

Sta*_*ble 4 html javascript forms

我有两个字段,一个是emailid,另一个是我的表单中的密码.我想检测当用户重新输入电子邮件和密码时,他不应该复制上面的内容.他必须再次手动编写.就像谷歌表格一样

bla*_*d Ψ 7

您也可以禁用ctrl+v组合right click.

对于IE,您可以使用以下事件处理程序:

onpaste="return false;" 
oncut="return false;" 
oncontextmenu="return false;" 
oncopy="return false;".
Run Code Online (Sandbox Code Playgroud)

以下是适用于所有浏览器的解决方法:

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;
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

在HTML部分中,您的字段将如下所示:

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)"/>
Run Code Online (Sandbox Code Playgroud)

如果输入类型是,我认为用户不能复制密码字段 password

希望这可以帮助.

注意:

  1. 在浏览器中禁用JavaScript将允许用户执行他们想要的任何操作
  2. 始终牢记这一点:尊重用户的自由.


pot*_*ato 6

2020年更新

copypaste你可以用它来防止这些行为,或修改数据被复制或粘贴事件。(请参阅浏览器支持的链接)

<input type="text" onpaste="return false">
Run Code Online (Sandbox Code Playgroud)

或者更长的javascript版本:

const elem = document.getElementById('nopaste');

elem.addEventListener('paste', (event) => {
  event.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
<input type="text" placeholder="can paste"><br>
<input type="text" id="nopaste" placeholder="can not paste">
Run Code Online (Sandbox Code Playgroud)