How to disable Paste (Ctrl+V) with jQuery?

JavascriptJqueryCopy PasteTextinput

Javascript Problem Overview


How can I disable Paste (Ctrl+V) option using jQuery in one of my input text fields?

Javascript Solutions


Solution 1 - Javascript

This now works for IE FF Chrome properly... I have not tested for other browsers though

$(document).ready(function(){
   $('#txtInput').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});

Edit: As pointed out by webeno, .bind() is deprecated hence it is recommended to use .on() instead.

Solution 2 - Javascript

Edit: It's almost 6 years later, looking at this now I wouldn't recommend this solution. The accepted answer is definitely much better. Go with that!


This seems to work.

You can listen to keyboard events with jQuery and prevent the event from completing if its the key combo you are looking for. Note, check 118 and 86 (V and v)

Working example here: http://jsfiddle.net/dannylane/9pRsx/4/

$(document).ready(function(){
    $(document).keydown(function(event) {
        if (event.ctrlKey==true && (event.which == '118' || event.which == '86')) {
            alert('thou. shalt. not. PASTE!');
            event.preventDefault();
         }
    });
});

Update: keypress doesn't fire in IE, use keydown instead.

Solution 3 - Javascript

As of JQuery 1.7 you might want to use the on method instead

$(function(){
    $(document).on("cut copy paste","#txtInput",function(e) {
        e.preventDefault();
    });
});

Solution 4 - Javascript

jQuery('input.disablePaste').keydown(function(event) {
    var forbiddenKeys = new Array('c', 'x', 'v');
    var keyCode = (event.keyCode) ? event.keyCode : event.which;
    var isCtrl;
    isCtrl = event.ctrlKey
    if (isCtrl) {
        for (i = 0; i < forbiddenKeys.length; i++) {
            if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
                 return false;
            }
        }
    }
    return true;
});

Solution 5 - Javascript

I tried this in my Angular project and it worked fine without jQuery.

<input type='text' ng-paste='preventPaste($event)'>

And in script part:

$scope.preventPaste = function(e){
   e.preventDefault();
   return false;
};

In non angular project, use 'onPaste' instead of 'ng-paste' and 'event' instesd of '$event'.

Solution 6 - Javascript

The following code will disable cut, copy and paste from full page.

$(document).ready(function () {
   $('body').bind('cut copy paste', function (e) {
      e.preventDefault();
   });
});

The full tutorial and working demo can be found from here - http://www.codexworld.com/disable-mouse-right-click-cut-copy-paste-using-jquery/">Disable cut, copy and paste using jQuery

Solution 7 - Javascript

 $(document).ready(function(){
   $('#txtInput').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="text" id="txtInput" />

Solution 8 - Javascript

You can catch key event :

function checkEventObj ( _event_ ){
	// --- IE explorer
	if ( window.event )
		return window.event;
	// --- Netscape and other explorers
	else
		return _event_;
}

document.keydown = function(_event) {
	var e = checkEventObject(_event);

	if( e.ctrlKey && (e.keyCode == 86) )
		window.clipboardData.clearData();
}

Not tested but, could help.

Source from comentcamarche and Zakaria

Solution 9 - Javascript

$(document).ready(function(){
  $('#txtInput').live("cut copy paste",function(e) {
    e.preventDefault();
  });
});

On textbox live event cut, copy, paste event is prevented and it works well.

Solution 10 - Javascript

I have tested the issue on chrome browser and it is working for me.Below is a solution for preventing the paste code in your textbox and also prevent the right click.

   $(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {

    e.preventDefault();
});

Solution 11 - Javascript

$(document).ready(function(){
   $('input').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMisamView Question on Stackoverflow
Solution 1 - JavascriptMisamView Answer on Stackoverflow
Solution 2 - JavascriptDannyLaneView Answer on Stackoverflow
Solution 3 - JavascriptSteve CView Answer on Stackoverflow
Solution 4 - JavascripthawxView Answer on Stackoverflow
Solution 5 - JavascriptAbhishekView Answer on Stackoverflow
Solution 6 - JavascriptJoyGuruView Answer on Stackoverflow
Solution 7 - JavascriptGtmView Answer on Stackoverflow
Solution 8 - JavascriptcanardmanView Answer on Stackoverflow
Solution 9 - JavascriptVikas BansalView Answer on Stackoverflow
Solution 10 - JavascriptChirag PrajapatiView Answer on Stackoverflow
Solution 11 - JavascriptwaheedView Answer on Stackoverflow