7
votes

Comment détecter la copie et la pâte en JavaScript?

J'ai deux champs, un e-mailId et un autre est mot de passe dans mon formulaire. Je veux empêcher l'utilisateur de coller dans ces champs. Ils doivent être forcés d'entrer manuellement, comme Google Forms.


8 commentaires

Si quelqu'un veut copier et coller, c'est leur décision, pas la vôtre. Empêcher le comportement par défaut du système d'exploitation / du navigateur est jamais une solution acceptable.


Cela a été fait auparavant, mais c'est une mauvaise idée, surtout pour les courriels et d'autres textes simples: il est plus gênant que de taper occasionnellement la mauvaise adresse e-mail.


Reportez-vous à Stackoverflow.com / Questions / 1226574 / ...


Mais je veux ajouter une autre fonctionnalité à ma forme, cette copie peut créer un problème à l'utilisateur dans le cas de mot de passe.


Dupliquer possible? Stackoverflow.com/ Questions / 1226574 / ...


Encore une fois, si vous ajoutez une fonctionnalité personnalisée et une copie / colle peut entraîner un problème, c'est votre problème , pas les utilisateurs. N'essayez jamais de résoudre votre propre problème en désavantagant l'utilisateur.


L'une des premières règles d'UX est de ne pas casser les comportements par défaut.


Dans le cas de type = "mot de passe" champs, certains (la plupart? Tous?) Les navigateurs ne vous laissent pas copier de toute façon. Donc, si l'utilisateur tente de copier un champ de mot de passe à l'autre, les résultats ne correspondent pas et échoueront immédiatement la validation. Si l'utilisateur copie d'une autre source à coller dans votre mot de passe votre mot de passe et confirmez les champs de mot de passe, alors que d'autres sources ont affiché le mot de passe en texte brut et ils savaient que c'était correct. Donc, ce que je dis, c'est que, à mon avis, tout est un peu non-problème.


3 Réponses :


11
votes

vous pouvez désactiver ctrl + v code> combinaison et Cliquez avec le bouton droit de la souris sur CODE>. strong>

pour IE, vous pouvez utiliser les gestionnaires d'événements suivants : p> xxx pré>

Voici une solution de contournement pour tous les navigateurs: p> xxx pré>

dans la section HTML, vos champs ressembleraient à:

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)"/>


4 commentaires

Vous pourrait les désactiver. Je ne dirais pas qu'un devrait les désactiver.


Cela ne fonctionnait pas pour moi à OSX. La clé CTRL est liée à '91' par exemple. Si vous avez accès à une bibliothèque 'jQuery' comme la bibliothèque, consultez cet article: Stackoverflow.com/questions/686995/catch- Entrée de pâte


@ blasteralfredψ Yep Je sais, mais c'est le premier résultat de recherche lorsqu'il s'agit de coller dans JavaScript, donnant simplement aux gens un itinéraire vers une autre solution.


@Superuberduper lemme regarde dans elle



8
votes

Mise à jour

Il y a copie et coller code > événements que vous pouvez utiliser pour empêcher ces actions ou modifier les données copiées ou collées. (Voir les liens de support de navigateur) P>

p>

<input type="text" placeholder="can paste"><br>
<input type="text" id="nopaste" placeholder="can not paste">


0 commentaires

0
votes

Vous devriez utiliser ONPASTE. L'événement de pâte déclenche lorsque l'utilisateur tente de coller du texte.

html xxx

javascript xxx


0 commentaires