Comment détecter ctrl+ v, ctrl+ en cutilisant Javascript?
J'ai besoin de restreindre le collage dans mes zones de texte, l'utilisateur final ne doit pas copier et coller le contenu, l'utilisateur ne doit taper du texte que dans la zone de texte.
Comment y parvenir?
javascript
jquery
html
Ramakrishnan
la source
la source
Réponses:
Je viens de faire cela par intérêt. Je suis d' accord ce n'est pas la bonne chose à faire, mais je pense que ce devrait être la décision op ... De plus , le code pourrait facilement être étendu pour ajouter des fonctionnalités, plutôt que de l'enlever (comme un presse - papiers plus avancé, ou Ctrl+ sdéclenchement d' un serveur - sauvegarde latérale).
Aussi juste pour clarifier, ce script nécessite la bibliothèque jQuery.
Démo Codepen
EDIT: suppression de 3 lignes redondantes (impliquant e.which) grâce à la suggestion de Tim Down (voir commentaires)
EDIT: prise en charge supplémentaire pour les Mac ( cmdclé au lieu de ctrl)
la source
keydown
etkeyup
surdocument
? Vous pouvez tester la touche Ctrl dans le$(".no-copy-paste").keydown
gestionnaire. En outre, il n'y a pas besoin due.keyCode || e.which
bit:e.keyCode
fonctionne dans tous les navigateurs quie.which
fonctionnent, donce.which
ne sera jamais utilisé. Peut-être pensiez-vous comment obtenir un code de caractère à partir d'unkeypress
événement? Enfin, cela ne fera rien à propos des pâtes du menu contextuel ou des menus d'édition, mais je suppose que l'OP n'a pas posé de questions directement à ce sujet.e.metaKey
ou d'e.ctrlKey
êtretrue
plutôt que d'attribuer des valeurs numériques aux touches et de les tester.Avec jquery, vous pouvez facilement détecter les copier, coller, etc. en liant la fonction:
Plus d'informations ici: http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/
la source
Bien que cela puisse être ennuyeux lorsqu'il est utilisé comme mesure anti-piratage, je peux voir qu'il pourrait y avoir des cas où cela serait légitime, donc:
J'ai utilisé
event.ctrlKey
plutôt que de vérifier le code de la clé comme sur la plupart des navigateurs sous Mac OS X Ctrl/ Altles événements "down" et "up" ne sont jamais déclenchés, donc le seul moyen de détecter est d'utiliserevent.ctrlKey
dans l'événement eg c après la Ctrlclé est maintenu enfoncé. J'ai également remplacéctrlKey
parmetaKey
des macs.Limitations de cette méthode:
edit
->copy
dans Firefox, par exemple, peut toujours autoriser le copier / coller.la source
Il y a une autre façon de le faire:
onpaste
,oncopy
etoncut
les événements peuvent être enregistrés et annulés dans IE, Firefox, Chrome, Safari (avec quelques problèmes mineurs), le seul grand navigateur qui ne permet pas l' annulation de ces événements est Opera.Comme vous pouvez le voir dans mon autre réponse, intercepter Ctrl+ vet Ctrl+ ccomporte de nombreux effets secondaires, et cela n'empêche toujours pas les utilisateurs de coller à l'aide du
Edit
menu Firefox , etc.Safari a encore quelques problèmes mineurs avec cette méthode (il efface le presse-papiers à la place de couper / copier lors de la prévention par défaut) mais ce bogue semble avoir été corrigé dans Chrome maintenant.
Voir aussi: http://www.quirksmode.org/dom/events/cutcopypaste.html et la page de test associée http://www.quirksmode.org/dom/events/tests/cutcopypaste.html pour plus d'informations.
la source
Démo en direct: http://jsfiddle.net/abdennour/ba54W/
la source
Solution courte pour empêcher l'utilisateur d'utiliser le menu contextuel, copier et couper dans jQuery:
La désactivation de la sélection de texte dans CSS peut également s'avérer utile:
la source
Si vous utilisez la
ctrlKey
propriété, vous n'avez pas besoin de maintenir l'état.la source
J'ai écrit un plugin jQuery, qui capture les frappes. Il peut être utilisé pour activer l'entrée de script dans plusieurs langues dans des formulaires html sans le système d'exploitation (à l'exception des polices). Ses environ 300 lignes de code, peut-être que vous aimeriez y jeter un œil:
En règle générale, soyez prudent avec ce type de modifications. J'ai écrit le plugin pour un client car d'autres solutions n'étaient pas disponibles.
la source
Vous pouvez utiliser ce code pour faire un clic droit, CTRL+ C, CTRL+ V, CTRL+ Xdétecter et empêcher leur action
la source
au lieu de onkeypress, utilisez onkeydown.
la source
Une autre approche (aucun plugin nécessaire) consiste à utiliser simplement la
ctrlKey
propriété de l' objet événement qui est passé. Cela indique si a Ctrlété pressé au moment de l'événement, comme ceci:Voir aussi jquery: keypress, ctrl + c (ou un combo comme ça) .
la source
N'oubliez pas que, même si vous pouvez détecter et bloquer Ctrl+ C/ V, vous pouvez toujours modifier la valeur d'un certain champ.
Le meilleur exemple pour cela est la fonction Inspecter l'élément de Chrome, qui vous permet de modifier la propriété valeur d'un champ.
la source
j'ai déjà votre problème et je l'ai résolu par le code suivant .. qui n'acceptent que les nombres
vous pouvez détecter l' Ctrlid
e.which == 17
la source
Vous pouvez écouter l'événement de pression de touche et arrêter l'événement par défaut (en entrant le texte) s'il correspond aux codes de touches spécifiques
la source
Note importante
J'utilisais
e.keyCode
pendant un moment et j'ai détecté que lorsque j'appuie sur ctrl+ ., cet attribut renvoie un mauvais numéro, 190, alors que le code ascii de.
est 46!Vous devriez donc utiliser à la
e.key.toUpperCase().charCodeAt(0)
place dee.keyCode
.la source
Il existe des moyens de l'empêcher.
Cependant, l'utilisateur pourra toujours désactiver le javascript ou simplement regarder le code source de la page.
Quelques exemples (nécessitent jQuery)
Edit: Comme l'a dit Tim Down, ces fonctions dépendent toutes du navigateur.
la source
paste
événement, ce qui inclut toutes les versions de Firefox antérieures à la version 3. Deuxièmement,window.clipboardData
c'est uniquement IE et je pense qu'il est maintenant désactivé par défaut dans IE . Troisièmement, la désactivation de tous leskeydown
événements où la touche Ctrl est enfoncée est excessive: vous évitez les raccourcis clavier utiles tels que Ctrl-A (tout sélectionner) et Ctrl-Z (annuler). Quatrièmement, comme d'autres l'ont mentionné, c'est vraiment une mauvaise chose à faire.