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é).
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$"
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
etautocomplete
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">
- utilisez l'un de ceux-ci pour
- 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">
- utilisez l'un de ceux-ci pour
- 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
- pour une entrée d'adresse:
- utilisez l'un de ceux-ci pour
- 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
- utilisez l'un de ceux-ci pour
- 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
-
- utilisez l'un de ceux-ci pour
- noms d'utilisateur
- utilisez l'un de ceux-ci pour
name
:username
- utilisez l'un de ceux-ci pour
autocomplete
:username
- utilisez l'un de ceux-ci pour
- 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)
-
- utilisez l'un de ceux-ci pour
ressources
- Current WHATWG HTML Standard for autocomplete.
- "Créer d'Incroyables Formes" de Google . Semble être mis à jour presque quotidiennement. Excellente lecture.
- "aider les utilisateurs à vérifier plus rapidement avec Autofill" de Google en 2015.
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".
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:
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
Voici la vraie réponse:
-
This works: http://jsfiddle.net/68LsL1sq/1/
<label for="name">Nom</label>
-
Ce n'est pas: http://jsfiddle.net/68LsL1sq/2/
<label for="name">No</label>
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.
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.
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');
Voici la nouvelle liste des"noms" de Google Autofill. Il y a tous les noms supportés dans n'importe quelle langue autorisée.