Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed
Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed

Prevent paste operation in textfield

ユーザー登録画面とかでパスワードとかメールの確認の貼り付け(Ctrl+V)を防止したい時があると思う。
今回はその場面で役立つようなjavascriptコードを紹介する。

code snippet

<script type="text/javascript">
<!--
    function onKeypress(e) {
	var keycode = (e.which)? e.which:event.keyCode;    
	if (e) { // Mozilla(Firefox, NN) and Opera
	    ctrl    = typeof e.modifiers == 'undefined' ? e.ctrlKey : e.modifiers & event.CONTROL_MASK;
	} else { // Internet Explorer 
	    ctrl    = event.ctrlKey;     
	} 
 
	// キーコードの文字を取得 
	keychar = String.fromCharCode(keycode).toUpperCase(); 
 
        if (ctrl) { 
	    if (keychar == "V") { 
	        alert("貼り付け禁止!!");
                // イベントの上位伝播を防止
                if(e){
                   e.preventDefault(); 
	           e.stopPropagation(); 
                }else{      
                   event.returnValue = false; 
	           event.cancelBubble = true;
                }  
	    } 
	}
 
}
dojo.addOnLoad(function(){
	dojo.connect(dojo.byId("confirmPass"),"keypress", function(e){ onKeypress(e);});
});
//-->
</script>

Test page

<html> <head> <SCRIPT TYPE=“text/javascript” SRC=“http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js”></SCRIPT> <script type=“text/javascript”> <!–

  function onKeypress(e) {
      var keycode = (e.which)? e.which:event.keyCode;
if (e) { // Mozilla(Firefox, NN) and Opera
    ctrl    = typeof e.modifiers == 'undefined' ? e.ctrlKey : e.modifiers & event.CONTROL_MASK;
} else { // Internet Explorer 
    ctrl    = event.ctrlKey;     
} 
     
// キーコードの文字を取得 
keychar = String.fromCharCode(keycode).toUpperCase(); 
	
      if (ctrl) { 
    if (keychar == "V") { 
        alert("貼り付け禁止!!");
              // イベントの上位伝播を防止
              if(e){
                 e.preventDefault(); 
           e.stopPropagation(); 
              }else{      
                 event.returnValue = false; 
           event.cancelBubble = true;
              }  
    } 
}
      

} dojo.addOnLoad(function(){

dojo.connect(dojo.byId("confirmPass"),"keypress", function(e){ onKeypress(e);});

}); –> </script> </head> <body> <form action=“#”> <table border=“0”> <tr><td>ID :</td><td><input type=“text” size=“10” id=“userid”></td></tr> <tr><td>pasword :</td><td><input type=“password” size=“10” id=“password”></td></tr> <tr><td>confirm :</td><td><input type=“password” size=“10” id=“confirmPass”></td></tr> </table> </form> </body> </html> ===== reference ===== - 各ブラウザのキーに対するキーコード表 - クロスブラウザでのJavaScriptキーボードイベントの扱い方