Désactiver coller du texte dans formulaire HTML
Est-il un moyen à l'aide de JavaScript pour désactiver la possibilité de coller du texte dans un champ de texte dans un formulaire HTML?
E. g.
J'ai un simple formulaire d'inscription où l'utilisateur est invité à saisir son e-mail deux fois. La deuxième entrée e-mail est de vérifier il n'y a pas de fautes de frappe dans la première entrée e-mail. Toutefois, si l'utilisateur copie/colle leur e-mail puis, cela va à l'encontre du but et j'ai connu des utilisateurs ayant des problèmes parce qu'ils ont d'entrée de l'e-mail erronée et copie/collé.
Peut-être que je n'ai pas été clair sur ma question, mais je ne suis pas d'essayer d'empêcher les gens de copier (ou faites glisser la sélection de texte sur leur navigateur. Je veux juste arrêter de coller entrée dans un champ de texte pour minimiser l'erreur de l'utilisateur.
Peut-être au lieu de l'utilisation de ce "hack", vous pouvez suggérer une autre solution pour le problème de base de ce que je suis en train d'essayer de résoudre ici? J'ai fait moins d'une demi-douzaine de tests utilisateurs, et cela est déjà arrivé deux fois. Mon public n'a pas un haut niveau de compétences en informatique.
- En arrêtant les gens de copier/coller de leur adresse e-mail de leur carnet d'adresse de leur navigateur. Ça te vas bien.
- Ne peut pas trop quand c'est un client en insistant sur les changements. vous pourrez boire un verre 🙂
- Il pourrait être parfait si il désactive le coller dans le champ de vérification uniquement lorsque le courriel n'a PAS été collé dans le champ d'origine. J'ai d'autres termes, l'utilisateur sera soit coller l'e-mail dans les deux champs, ou dans ni de champ.
- Si un client demande cela, dites-leur comment mauvaise idée il est. Il est un excellent moyen pour faire chier un droit du client au point qu'ils sont les plus susceptibles de s'éloigner (à l'inscription). Vous ne voulez pas de la relation client pour commencer avec le client en étant à l'écart. Cette pratique est d'obtenir à la fois de plus en plus commun, et de plus en plus inacceptable que plus de personnes utilisent des gestionnaires de mots de passe. Voir aussi: ux.stackexchange.com/q/21062/9529 et ob. xkcd: xkcd.com/970
- J'ai trouvé cette question tout en regardant comment vaincre cette "fonctionnalité" avec l'élément de l'inspecteur. Il a travaillé!
- Vous êtes le pire de vouloir le faire. Si vous devez désactiver couper/copier d'un champ, mais jamais, jamais, jamais désactiver la pâte.
Vous devez vous connecter pour publier un commentaire.
J'ai récemment eu à contrecœur désactiver le copier-coller d'un élément de formulaire. Pour ce faire, j'ai écrit un cross-browser* mise en place d'Internet Explorer (et d'autres) onpaste gestionnaire d'événement. Ma solution a dû être indépendant de tout tiers bibliothèques JavaScript.
Voici ce que j'ai trouvé. Il n'est pas complètement désactiver le collage (l'utilisateur peut coller un seul caractère à la fois, par exemple), mais il répond à mes besoins et évite d'avoir à traiter avec les codes de touches, etc.
À faire usage de ce pour désactiver le collage:
* Je sais oninput ne fait pas partie du DOM du W3C spec, mais tous les navigateurs que j'ai testé ce code avec Chrome 2, Safari 4, Firefox 3, Opera 10, IE6, IE7—soutien oninput ou onpaste. De tous ces navigateurs, seulement à l'Opéra, ne prend pas en charge onpaste, mais il prend en charge oninput.
Remarque: Cela ne fonctionne pas sur une console ou d'un autre système qui utilise un clavier à l'écran (en supposant que le clavier à l'écran ne pas envoyer les clés pour le navigateur lors de chaque touche est sélectionnée). Si il est possible que la page/l'application peut être utilisée par quelqu'un avec un clavier à l'écran et de l'Opéra (par exemple: Nintendo Wii, certains téléphones mobiles), ne pas utiliser ce script, sauf si vous avez testé pour vous assurer que le clavier à l'écran envoie les clés pour le navigateur après chaque touche de sélection.
onpaste="return false"
, est-il un problème si je vais avec cette approcheonpaste
dans les navigateurs qui ne sont pas les fournir. Vous dites "je suis en mesure d'empêcher l'utilisateur de coller quelque chose", mais quel navigateur avez-vous testé cette?Ne pas le faire. Ne salissez pas avec le navigateur de l'utilisateur. Par Copier-Coller dans un E-Mail de confirmation de champ, l'utilisateur accepte la responsabilité sur ce qu'on a type de. S'ils sont assez stupides pour copier + coller une mauvaise adresse (cela m'est arrivé) alors c'est de leur propre putain de faute.
Si vous voulez vous assurer que l'adresse E-Mail de confirmation fonctionne, demandez à l'utilisateur de vérifier leur E-Mail que votre site waits ("Veuillez ouvrir votre webmail programme dans une nouvelle fenêtre"). Afficher l'adresse E-Mail en grosses lettres ("L'E-Mail de confirmation a été envoyé..... fait une erreur? Cliquez ici pour en changer).
Encore mieux, si vous le pouvez, permettent à l'utilisateur d'avoir une sorte de limité l'accès sans confirmer. De cette façon, ils peuvent se connecter tout de suite et vous aider à améliorer vos chances de rester en contact avec le visiteur, même si l'e-mail de confirmation est bloqué pour d'autres raisons (par exemple, les filtres anti-spam).
so?
- eh bien, tout simplement, c'est un forum pour répondre aux questionsAjouter une classe de "disablecopypaste" pour les entrées que vous souhaitez désactiver le copier coller et ajouter ce script jQuery
Viens de recevoir ceci, nous pouvons le réaliser à l'aide de
onpaste:"return false"
, grâce à: http://sumtips.com/2011/11/prevent-copy-cut-paste-text-field.htmlNous disposons de plusieurs autres options sont disponibles comme indiqué ci-dessous.
Vous pouvez..... mais ne le faites pas.
Vous ne devez pas modifier le comportement par défaut d'un navigateur d'utilisateurs. C'est vraiment mauvaise utilisabilité de votre application web. Aussi, si un utilisateur souhaite désactiver ce hack, puis il suffit de désactiver le javascript sur leur navigateur.
Juste ajouter ces attributs dans la zone de texte
Folle idée: demander à l'utilisateur de vous envoyer un e-mail dans le cadre de la procédure d'inscription. Ce serait évidemment être gênant lorsque l'on clique sur un lien mailto ne fonctionne pas (si ils utilisent le webmail, par exemple), mais je le vois comme un moyen d'simultanément une garantie contre les fautes de frappe et de confirmer l'adresse e-mail.
Il serait comme ça: Ils remplissent le formulaire, en entrant leur nom, mot de passe, et autres joyeusetés. Quand ils poussent soumettre, ils sont en fait en cliquant sur un lien pour envoyer un mail à votre serveur. Vous avez déjà enregistré leurs autres renseignements, afin que le message comprend juste un jeton de dire ce qui compte c'est pour.
Comment sur l'envoi d'un e-mail de confirmation à l'adresse email que l'utilisateur a entré deux fois dans lequel il y a un lien vers une URL de confirmation sur votre site, alors vous savez qu'ils ont reçu le message?
Quelqu'un qui n'a pas de cliquez pour confirmer la réception de l'e-mail peut avoir entré son adresse email incorrecte.
Pas une solution parfaite, mais juste quelques idées.
L'extension de @boycs réponse, je vous recommande également à l'aide de "sur".
Vous pouvez utiliser jquery
Fichier HTML
jquery code
si vous devez utiliser 2 champs email et sont préoccupés par l'utilisateur de manière incorrecte le collage de la même erreur de frappe sur le courriel de champ 1 champ 2 je dirais ensuite afficher un message d'alerte (ou quelque chose de plus subtil) si l'utilisateur colle quelque chose dans le deuxième champ email
de cette façon, vous ne désactivez pas coller, il vous suffit de leur donner un rappel amical pour vérifier ce qu'ils ont sans doute tapé dans le premier champ, puis collé à la deuxième champ est correct.
cependant, peut-être un seul champ e-mail avec la saisie semi-automatique est tout ce qui est nécessaire. les chances sont qu'ils ont rempli leur e-mail correctement avant sur un autre site, à un certain moment et le navigateur vous proposera de remplir le champ avec le courriel
Vous pouvez attacher un "keydown" auditeur à la zone de saisie pour détecter si oui ou non les touches Ctrl + V pressée et, le cas échéant, d'arrêter la manifestation ou de l'ensemble de la zone de saisie de la valeur ".
Qui ne serait pas gérer un clic droit et coller ou coller dans le menu Edition de l'navigateur, cependant. Vous devrez peut-être ajouter une "dernière longueur" à l'encontre des keydown auditeur et l'utilisation d'un intervalle de vérifier le champ actuel de la longueur pour voir si il augmenter depuis la dernière touche.
Ni est recommandée, bien que. Les champs de formulaire avec de la pâte handicapés sont extrêmement frustrant. Je suis capable de taper mon e-mail correctement la première fois, donc je me réserve le droit de le coller dans la deuxième case.
Ajouter une deuxième étape de votre processus d'inscription. Première page comme d'habitude, mais sur reload, l'affichage d'un deuxième page et demander de l'envoyer à nouveau. Si c'est si important que cela, l'utilisateur peut gérer.
à partir de
Certains peuvent suggérer l'utilisation de Javascript pour capturer les actions des utilisateurs, à l'instar de droite de la souris ou les touches Ctrl+C /Ctrl+V de combinaisons de touches, puis arrêt de l'opération. Mais ce n'est évidemment pas la meilleure ou la solution la plus simple.
La solution est intégrée dans le champ de saisie lui-même des propriétés avec certains événements de la capture à l'aide de Javascript.
Pour désactivé les navigateurs de saisie semi-automatique, il suffit d'ajouter l'attribut dans le champ de saisie. Il devrait ressembler à quelque chose comme ceci:
Et si vous souhaitez refuser les Copier et de les Coller pour ce champ, il suffit d'ajouter le code Javascript de l'événement de la capture des appels oncopy, onpaste, et oncut et les faire revenir faux, comme suit:
L'étape suivante est d'utiliser onselectstart de refuser l'entrée du champ de la sélection du contenu de l'utilisateur, mais attention: cela ne fonctionne que pour Internet Explorer. Le reste du travail ci-dessus sur tous les principaux navigateurs: Internet Explorer, Mozilla Firefox, Apple Safari (sur Windows OS, au moins) et Google Chrome.
Vérifier la validité de l'enregistrement MX de l'armée de l'e-mail indiquée. Cela peut éliminer les erreurs de la droite du signe@.
Vous pouvez le faire avec un appel AJAX avant de soumettre et/ou côté serveur une fois que le formulaire est soumis.
- Je utiliser ce vanilla JS solution:
Avec Jquery, vous pouvez le faire avec un simple codeline.
HTML:
Code:
JSfiddle: https://jsfiddle.net/ZjR9P/2/
que sur l'utilisation de CSS sur UIWebView? quelque chose comme
vous pouvez également lire détails sur bloc de copier-coller à l'aide de CSS
http://rakaz.nl/2009/09/iphone-webapps-101-getting-safari-out-of-the-way.html
Solution Simple: il suffit d'inverser le processus d'inscription: au lieu de demander la confirmation à la fin du processus d'inscription, la confirmation de la demande au début de l'année! I. e. le processus d'enregistrement a commencé avec un simple formulaire demandant adresse e-mail et rien d'autre. Lors de l'envoi, un e-mail avec un lien vers une page de confirmation unique à l'e-mail envoyé. L'utilisateur aller à cette page, puis le reste de l'information pour l'inscription (nom d'utilisateur, prénom, nom, etc.) sera demandée.
C'est simple depuis que le site n'a même pas besoin de stocker quoi que ce soit avant la confirmation, de l'e-mail peut être chiffré avec une clé et joint à la partie de la page de confirmation de l'adresse.
J'ai fait quelque chose de similaire à ce pour http://bookmarkchamp.com - là j'ai voulu détecter lorsqu'un utilisateur copié quelque chose dans un champ HTML. La mise en œuvre, je suis venu avec était de vérifier le domaine sans cesse pour voir si à tout moment il était tout à coup un tas de texte là.
En d'autres termes: si une fois milisecond auparavant il n'y avait pas de texte, et il y a maintenant plus de 5 caractères... alors l'utilisateur a probablement collé quelque chose dans le domaine.
Si vous voulez voir ce travail en Bookmarkchamp (vous devez être inscrit), coller une URL dans le champ URL (ou faire glisser et déposer une URL en y).
La manière dont je pourrais résoudre le problème de la confirmation d'une adresse e-mail est comme suit:
Pour plus de sécurité, le code doit avoir une durée de vie limitée, et il devrait être autorisé qu'une seule fois dans le processus d'inscription.
Aussi, afin de prévenir toute malveillants robot applications, il est préférable d'accompagner la première étape avec captcha ou un mécanisme similaire.
À l'aide de jquery, vous pouvez éviter le copier-coller et le couper à l'aide de cette