Comment déclencher Autofill dans Google Chrome?

je voudrais savoir s'il existe une sorte de markup spécial pour activer la fonction de remplissage automatique Chrome pour une forme spécifique. Je n'ai trouvé que des questions sur la façon de le désactiver, mais je voudrais savoir si je peux ajouter une sorte de balisage pour le code html, afin de dire au navigateur "c'est la saisie de l'adresse" ou "c'est le champ du code POSTAL" de remplir correctement (supposé l'utilisateur activé cette fonctionnalité).

160
demandé sur Riesling 2011-08-28 22:58:30

10 réponses

mise à jour pour 2017: on dirait que la réponse de Kayvar a plus d'informations à jour que la mienne. Futurs lecteurs: Donnez votre up-votes à qui répond .

C'est une excellente question et dont la documentation est étonnamment difficile à trouver. En fait, dans de nombreux cas, vous trouverez que la fonctionnalité Auto-remplir Chrome "fonctionne tout simplement."Par exemple, l'extrait suivant de html produit un formulaire qui, au moins pour moi (Chrome v. 18), est automatiquement rempli après avoir cliqué dans le premier champ:

<!DOCTYPE html>
<html>
<body>    
<form method="post">
  First name:<input type="text" name="fname" /><br />
  Last name: <input type="text" name="lname" /><br />
  E-mail: <input type="text" name="email" /><br />
  Phone: <input type="text" name="phone" /><br />
  Address: <input type="text" name="address" /><br />
</form>
</body>
</html>

cependant, cette réponse n'est pas satisfaisante, car elle laisse la solution dans le domaine de la magie."Creuser plus profondément J'ai appris que Chrome (et d'autres navigateurs activés par autofill) se fient principalement sur des indices contextuels pour déterminer le type de données qui devraient être remplies dans les éléments de formulaire. Des exemples de tels indices contextuels inclure le name d'un élément d'entrée, le texte entourant l'élément, et tout texte placé.

toutefois, L'équipe de Chrome a récemment reconnu que cette solution n'était pas satisfaisante et elle a commencé à faire pression en faveur d'une normalisation en la matière. un billet très instructif du Google Webmasters group a récemment discuté de cette question, en expliquant:

malheureusement, jusqu'à présent, il a été difficile pour les webmestres à veillez à ce que Chrome et les autres fournisseurs de formulaires puissent analyser correctement leur formulaire. Certaines normes existent, mais elles imposent un lourd fardeau à la mise en œuvre du site Web, de sorte qu'elles ne sont pas utilisées beaucoup dans la pratique.

(les" normes "auxquelles ils se réfèrent sont une version plus récente du spec mentionné dans la réponse D'Avalanchis ci-dessus.)

le Google post décrit ensuite leur solution proposée (qui est satisfait par critique significative dans les commentaires du post). Ils proposent l'utilisation d'un nouvel attribut à cet effet:

il suffit d'ajouter un attribut à l'élément d'entrée, par exemple un champ d'adresse de courriel pourrait ressembler à:

<input type=”text” name=”field1” x-autocompletetype=”email” />

...où x- signifie" expérimental " et sera supprimé si et quand cela deviendra une norme. Lire le post pour plus de détails, ou si vous voulez creuser plus profondément, vous trouverez une explication plus complète de la proposition sur le wiki whatwg .


Maj: Comme indiqué dans ces perspicace réponses , toutes les expressions régulières Chrome utilise pour identifier/reconnaître les domaines communs peuvent être trouvées dans autofill_regex_constants.cc.utf8 . Donc pour répondre à la question originale, assurez-vous juste que les noms de vos champs html correspondent à ces expressions. En voici quelques exemples:

  • prénom: "first.*name|initials|fname|first$"
  • nom de famille: "last.*name|lname|surname|last$|secondname|family.*name"
  • email: "e.?mail"
  • adresse (Ligne 1): "address.*line|address1|addr1|street"
  • code postal: "zip|postal|post.*code|pcode|^1z$"
164
répondu kmote 2018-02-12 14:34:22

cette question est assez ancienne mais j'ai une réponse mise à jour pour 2017 !

voici un lien vers la documentation WHATWG pour activer autocomplete.

Google a écrit un pretty nice guide pour le développement d'applications web qui sont conviviales pour les appareils mobiles. Ils ont une section sur la façon de nommer les entrées sur les formes d'utiliser facilement l'auto-remplissage. Eventhough il est écrit pour mobile, cela s'applique à la fois pour le bureau et mobile!

comment activer AutoComplete sur vos formulaires HTML

voici quelques points clés sur la façon d'activer autocomplete:

  • utilisez un <label> pour tous vos <input> champs
  • Ajouter un autocomplete attribut à vos étiquettes <input> et le remplir en utilisant ce guide .
  • nommez vos attributs name et autocomplete correctement pour tous <input> tags
  • exemple :

    <label for="frmNameA">Name</label>
    <input type="text" name="name" id="frmNameA"
    placeholder="Full name" required autocomplete="name">
    
    <label for="frmEmailA">Email</label>
    <input type="email" name="email" id="frmEmailA"
    placeholder="name@example.com" required autocomplete="email">
    
    <!-- note that "emailC" will not be autocompleted -->
    <label for="frmEmailC">Confirm Email</label>
    <input type="email" name="emailC" id="frmEmailC"
    placeholder="name@example.com" required autocomplete="email">
    
    <label for="frmPhoneNumA">Phone</label>
    <input type="tel" name="phone" id="frmPhoneNumA"
    placeholder="+1-555-555-1212" required autocomplete="tel">
    

Comment nommer votre <input> tags

afin de déclencher autocomplete, assurez-vous de nommer correctement le name et autocomplete dans vos attributs <input> . Cela permettra automatiquement l'autocomplet sur les formulaires. Assurez-vous également d'avoir un <label> ! Cette information peut également être trouvée ici .

Voici comment nommer vos entrées:

  • nom
    • utilisez l'un de ceux-ci pour name : name fname mname lname
    • utilisez l'un de ceux-ci pour autocomplete :
      • name (pour le nom complet)
      • given-name (pour prénom)
      • additional-name (pour le deuxième prénom)
      • family-name (nom de famille)
    • exemple: <input type="text" name="fname" autocomplete="given-name">
  • e-Mail
    • utilisez l'un de ceux-ci pour name : email
    • utilisez l'un de ceux-ci pour autocomplete : email
    • exemple: <input type="text" name="email" autocomplete="email">
  • adresse
    • utilisez l'un de ceux-ci pour name : address city region province state zip zip2 postal country
    • utilisez l'un de ceux-ci pour autocomplete :
      • pour une entrée d'adresse:
        • street-address
      • pour deux entrées d'adresse:
        • address-line1
        • address-line2
      • address-level1 (état ou province)
      • address-level2 (ville)
      • postal-code (code postal)
      • country
  • Téléphone
    • utilisez l'un de ceux-ci pour name : phone mobile country-code area-code exchange suffix ext
    • utilisez l'un de ceux-ci pour autocomplete : tel
  • Carte De Crédit
    • utilisez l'un de ceux-ci pour name : ccname cardnumber cvc ccmonth ccyear exp-date card-type
    • utilisez l'un de ceux-ci pour autocomplete :
      • cc-name
      • cc-number
      • cc-csc
      • cc-exp-month
      • cc-exp-year
      • cc-exp
      • cc-type
  • noms d'utilisateur
    • utilisez l'un de ceux-ci pour name : username
    • utilisez l'un de ceux-ci pour autocomplete : username
  • mots de passe
    • utilisez l'un de ceux-ci pour name : password
    • utilisez l'un de ceux-ci pour autocomplete :
      • current-password (pour signer des formulaires)
      • new-password (pour les formulaires d'inscription et de changement de mot de passe)

ressources

38
répondu Katie S 2017-09-19 15:36:18

D'après mes tests, l'étiquette x-autocomplete ne fait rien. Utilisez plutôt des balises autocomplete sur vos balises d'entrée, et définissez leurs valeurs selon les spécifications HTML ici http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofill-field .

exemple:

<input name="fname" autocomplete="given-name" type="text" placeholder="First Name" required>

l'étiquette du formulaire parent doit être autocomplete=" on"et method="POST".

35
répondu Micah 2014-08-20 20:11:40

vous devez nommer les éléments de façon appropriée afin que le navigateur les autofille.

Voici la spécification de L'IETF pour ceci:

http://www.ietf.org/rfc/rfc3106.txt 1

4
répondu Avalanchis 2011-10-17 21:41:10

semble que nous allons obtenir plus de contrôle sur cette fonction de remplissage automatique, Il ya une nouvelle API expérimentale à venir à Chrome Canary, qui peut être utilisé pour accéder aux données après avoir demandé à l'utilisateur pour elle:

http://www.chromium.org/developers/using-requestautocomplete http://blog.alexmaccaw.com/requestautocomplete

nouvelles infos de google:

http://googlewebmastercentral.blogspot.de/2015/03/helping-users-fill-out-online-forms.html

https://developers.google.com/web/fundamentals/input/form/label-and-name-inputs#use-metadata-to-enable-auto-complete

2
répondu Riesling 2015-03-19 15:01:18

Voici la vraie réponse:

la seule différence réside dans l'étiquette elle-même. Le " Nom "vient de" nom "ou" nom " en portugais.

So voici ce dont vous avez besoin:

  • Une forme wrapper;
  • Un <label for="id_of_field">Name</label>
  • Un <input id="id_of_field"></input>

rien de plus.

0
répondu Totty.js 2014-11-07 15:31:17

je viens de jouer avec le spec et j'ai obtenu un bon exemple de travail - y compris quelques champs supplémentaires.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>

  <form autocomplete="on" method="POST">

    <fieldset>
        <legend>Ship the blue gift to...</legend>
        <p>
            <label> Firstname:
<input name="fname" autocomplete="section-blue shipping given-name" type="text"  required>
            </label>
      </p>
        <p>
            <label> Lastname:
<input name="fname" autocomplete="section-blue shipping family-name" type="text" required>
            </label>
      </p>

        <p>
            <label> Address: <input name=ba
                autocomplete="section-blue shipping street-address">
            </label>


      </p>
        <p>
            <label> City: <input name=bc
                autocomplete="section-blue shipping address-level2">
            </label>

      </p>
        <p>
            <label> Postal Code: <input name=bp
                autocomplete="section-blue shipping postal-code">
            </label>
      </p>

    </fieldset>
    <fieldset>
        <legend>Ship the red gift to...</legend>
        <p>
            <label> Firstname:
<input name="fname" autocomplete="section-red shipping given-name" type="text" required>
            </label>
      </p>

        <p>
            <label> Lastname:
<input name="fname" autocomplete="section-red shipping family-name" type="text" required>
            </label>
      </p>
        <p>
            <label> Address: <input name=ra
                autocomplete="section-red shipping street-address">
            </label>
      </p>


        <p>
            <label> City: <input name=bc
                autocomplete="section-red shipping address-level2">
            </label>

      </p>

        <p>
            <label> Postal Code: <input name=rp
                autocomplete="section-red shipping postal-code">
            </label>
      </p>

    </fieldset>

        <fieldset>
        <legend>payment address</legend>
        <p>
            <label> Firstname:
<input name="fname" autocomplete="billing given-name" type="text" required>
            </label>
      </p>

        <p>
            <label> Lastname:
<input name="fname" autocomplete="billing family-name" type="text" required>
            </label>
      </p>
        <p>
            <label> Address: <input name=ra
                autocomplete="billing street-address">
            </label>
      </p>


        <p>
            <label> City: <input name=bc
                autocomplete="billing address-level2">
            </label>

      </p>

        <p>
            <label> Postal Code: <input name=rp
                autocomplete="billing postal-code">
            </label>
      </p>

    </fieldset>
    <input type="submit" />
</form>

</body>
</html>

JSBIN

il contient 2 zones d'adresse séparées et aussi différents types d'adresse. Testé également sur iOS 8.1.0 et il semble qu'il remplit toujours tous les champs à la fois, tandis que chrome Bureau Auto remplir adresse par adresse.

0
répondu staabm 2015-11-20 08:50:32

Dans mon cas, $('#EmailAddress').attr('autocomplete', 'off'); n'est pas travaillé. Mais les travaux suivants sur chrome Version 67 par jQuery.

$('#EmailAddress').attr('autocomplete', 'new-email');
$('#Password').attr('autocomplete', 'new-password');
0
répondu reza.cse08 2018-07-22 16:04:09

Voici la nouvelle liste des"noms" de Google Autofill. Il y a tous les noms supportés dans n'importe quelle langue autorisée.

autofill_regex_constants.cc

0
répondu Alvargon 2018-08-22 07:13:04