Comment désactiver Coller (Ctrl + V) avec jQuery?

Comment puis-je désactiver l'option Coller ( Ctrl + V ) en utilisant jQuery dans l'un de mes champs de texte d'entrée?

Cela fonctionne maintenant pour IE FF Chrome correctement … Je n'ai pas testé pour d'autres navigateurs cependant

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

Edit: Il est presque 6 ans plus tard, en regardant cela maintenant, je ne recommanderais pas cette solution. La réponse acceptée est certainement beaucoup mieux. Allez avec ça!


Cela semble fonctionner.

Vous pouvez écouter des événements de clavier avec jQuery et empêcher l'événement de terminer si c'est le combo de clé que vous recherchez. Notez, cochez 118 et 86 ( V et v )

Exemple de travail ici: 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(); } }); }); 

Mise à jour: la pression de touche ne déclenche pas dans IE, utilisez plutôt la décomposition.

A partir de JQuery 1.7, vous voudrez peut-être utiliser la méthode on plutôt

 $(function(){ $(document).on("cut copy paste","#txtInput",function(e) { e.preventDefault(); }); }); 
 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; }); 

J'ai essayé cela dans mon projet Angular et ça a bien fonctionné sans jQuery.

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

Et dans la partie script:

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

Dans un projet non angulaire, utilisez 'onPaste' au lieu de 'ng-paste' et 'event' instesd de '$ event'.

Le code suivant désactivera la coupe, la copie et la pâte à partir de la page complète.

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

Le tutoriel complet et la démonstration de travail peuvent être trouvés à partir d'ici – Désactiver la coupe, copier et coller en utilisant jQuery

Vous pouvez saisir un événement clé:

 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(); } 

Non testé mais, pourrait vous aider.

Source de comentcamarche et Zakaria

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

Lors de la coupure de l'événement en direct de la zone de texte, copier, coller l'événement est empêché et cela fonctionne bien.