web-dev-qa-db-fra.com

Remplissage automatique en remplissant des champs incorrects

J'ai un site avec une page de paiement qui a toujours fonctionné à merveille.
Récemment, tout client qui utilise la saisie automatique pour renseigner ses informations reçoit son adresse e-mail dans le champ de la société . Aucune modification n'a été apportée qui pourrait avoir une incidence sur ce . Quels autres outils puis-je utiliser? aller au fond des choses?

20
Haim

J'ai rencontré un problème similaire, un champ "société" étant placé sous un champ "nom". Le champ de cette société était automatiquement renseigné avec une année de naissance… .. Il provenait d'un autre formulaire sur le même site qui affichait un groupe de champs «Date de naissance» juste en dessous du champ «Nom». Donc, chrome stockait ses valeurs de saisie automatique dans cet ordre… .. J'ai fini par changer mon deuxième ordre de champ de formulaire (malheureusement, c'était le mieux que je pouvais faire).

3
Maxime Brehin

Le tour de proxy d'entrée presque invisible

Je viens de rencontrer le même problème avec le Chrome 72 ... Il voulait juste remplir n'importe quel type de champ (sélectionner ou saisir) tant qu'il n'était pas en lecture seule (avec aucun respect du nom, attributs de saisie semi-automatique, etc.), avec tout type de valeur qu'il a pu stocker précédemment.

  • Vous voudrez peut-être éviter que le champ ne soit rempli car vous écoutez l'événement change ou une validation sur l'entrée peut déclencher un message d'erreur simplement à cause d'un remplissage automatique incorrect.
  • Vous voulez simplement que la valeur de remplissage automatique soit supprimée et ne soit même pas affichée (même avant l'exécution de javascript).

Vous fournissez simplement un autre champ à remplir par le navigateur et vous le rendez presque impossible à voir en le masquant sous un autre champ.

    <input type="text" id="autofill-if-you-dare" style="position: absolute; z-index: -1; top: 20px; width: 0; height:0" />

Remarque: Vous pouvez toujours le masquer ou le supprimer par javascript ultérieurement, mais vous ne devez pas le masquer avant la fin du remplissage automatique, car Chrome ne remplira que les champs visibles. Et comme d'autres réponses l'ont indiqué, cela ne déclenche aucun événement, vous devez donc vous fier à un sondage pour le faire.

2
Fab

Je me suis retrouvé dans un problème similaire, et la propriété autocomplete est ce qu'il faut utiliser dans cette situation

<input type="text" name="fooBar" autocomplete="organization" > 

liste exhaustive des balises autocomplete/autofill pour les entrées de formulaire html

2
catalint

Le problème de l'OP a peut-être été résolu (ou peut-être réapparu dans des mises à jour récentes!), Mais début 2019, vous pouvez diagnostiquer certains de ces problèmes en définissant l'indicateur show-autofill-type-predictions dans chrome://flags, en redémarrant Chrome, puis en regardant le titre texte) pour l’entrée en question. Il vous indiquera quelles informations sont utilisées pour deviner le "type" de champ et quel type de données sauvegardées doivent être utilisées pour le remplir.

1
Coderer

Vous devez ajouter un nom à la balise d’entrée. Les navigateurs utilisent name pour identifier les informations censées entrer dans le champ. Vous pouvez également utiliser la même chose pour l'ID et pour le paramètre fictif si vous le souhaitez… .. Essayez ceci:

<input type="text" name="company" id="company" placeholder="company">

Si cela ne fonctionne toujours pas, vous pouvez désactiver le remplissage automatique pour ce champ particulier *:

<input type="text" name="company" id="company" placeholder="company" autocomplete="off">

* Vous pouvez également désactiver la saisie automatique pour tout le formulaire à l'aide de la même propriété de complétion automatique et de la valeur off.

1
Yosef Sahler

Je rencontre ce problème récemment, en particulier avec le chrome. Il paraît que 

autocomplete="off"

n'est plus pris en charge par Chrome. J'ai trouvé les sources suivantes utiles:

Chromium (sur lequel repose, selon moi, beaucoup de Chrome) a le code suivant qui indique l'expression régulière utilisée lors de la recherche de champs à renseigner avec la saisie semi-automatique de Chrome:

https://cs.chromium.org/chromium/src/components/autofill/core/common/autofill_regex_constants.cc?sq=package:chromium&g=0&l=262

J’ai l’impression qu’il n’ya qu’un autre moyen de contourner ce que j’ai trouvé: suivre les conventions suivantes: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete

Ou au moins, assurez-vous de donner un attribut suffisamment différent de la liste ci-dessus pour qu'il ne soit pas pris en compte par les fonctionnalités de saisie semi-automatique.

0
AC007