Saisie de texte autocomplète
je sais qu'il y a beaucoup de solutions JavaScript, mais y a-t-il une méthode HTML5 pour avoir une entrée de texte avec autocomplete? L'élément datalist est presque ce que je cherche, sauf qu'il vous permet d'entrer des valeurs personnalisées plutôt que de vous limiter à ce qui est dans la liste.
5 réponses
HTML5 a un autocomplete
attribut qui peut être spécifié comme on
ou off
dans un champ.
Voici un exemple:
<form action="/form.php" autocomplete="on">
First name:<input type="text" name="first_name"><br>
Last name: <input type="text" name="last_name"><br>
E-mail: <input type="email" name="email" autocomplete="off">
<input type="submit">
</form>
La façon dont cela fonctionne est que les valeurs que vous soumettez la première fois vous sera proposé pour vous sur les prochaines fois que vous visitez cette page sur keyup
de chaque champ.
- la question en décidant d'utiliser cette fonctionnalité est celle de la compatibilité du navigateur. Votre meilleur pari est de vérifier plusieurs navigateurs pour vérifier qu'il fonctionne. caniuse.com fait que le support semble assez mauvais, mais je ne vois aucun mal à l'utiliser pour aider ceux qui ont des browers modernes.
autres faits à propos de autocomplete
W3Schools, n'est pas de la haine dans ce cas, car il couvre les notions de base:
- lorsque autocomplete est activé, le navigateur remplit automatiquement les valeurs fondée sur des valeurs que l'utilisateur a entré avant.
- Il est possible de avoir la saisie semi-automatique "sur" pour la forme, et "off" pour entrée spécifique fields, ou vice versa.
- L'attribut autocomplete fonctionne avec et les types suivants: texte, recherche, url, tel, email, mot de passe, lecteurs de données, portée et couleur.
vous devriez essayer le datalist
élément. C'est clairement définie dans W3C HTML5 recommandation, probablement la meilleure option sur le bureau pour maintenant et dans un futur proche.
l'élément datalist est relié à un entrée élément utilisant la liste l'attribut de l'élément d'entrée.
chaque élément d'option qui est un descendant de l'élément dataliste, qui n'est pas désactivé, et dont la valeur est une chaîne qui n'est pas le vide chaîne, représente une suggestion. Chaque suggestion a un valeur et un étiquette.
Google chrome et chrome les navigateurs basés le supportent depuis v21.x (à partir de décembre 2014, la version actuelle est 39, vérifier l'état de compatibilité de les autres navigateurs ici) Firefox et Opéra supporte aussi depuis longtemps. Moderne(!) IE versions prend partiellement en charge datalist.
Démo: Un travail datalist mise en œuvre par Eiji Kitamura.
Polyfill: voir aussi le RelevantDropdown. C'est un polyfill dataliste HTML5 qui dépend de jQuery et Modernizr.
Essayez d'exécuter cet exemple:
<input type="search" list="languages" placeholder="Pick a programming language..">
<datalist id="languages">
<option value="PHP" />
<option value="C++" />
<option value="Java" />
<option value="Ruby" />
<option value="Python" />
<option value="Go" />
<option value="Perl" />
<option value="Erlang" />
</datalist>
W3 référence:https://www.w3.org/TR/html5/forms.html#the-datalist-element
cette question est assez ancienne mais j'ai un mise à jour de réponse pour 2017!
Voici un lien officiel norme HTML WHATWG actuelle pour activer autocomplete.
La réponse suivante est de ma réponse originale à cette question à partir d'ici: https://stackoverflow.com/a/41965106/1696153
Tout ce que vous avez à faire maintenant pour déclencher autocomplete est le nom de votre input
balise correctement.
Google a écrit un très joli guide pour le développement d'applications web 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. Même s'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 la saisie semi-automatique:
- un
<label>
pour tous vos<input>
champs - Ajouter un
autocomplete
l'attribut pour votre<input>
les balises et le remplir à l'aide de ce guide. - Nommez votre
name
etautocomplete
attributs correctement pour tous<input>
les balises 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>
les balises
afin de déclencher autocomplete, assurez-vous de nommer correctement le name
et autocomplete
attributs <input>
balises. Cela permettra automatiquement l'autocomplet sur les formulaires. Assurez-vous également d'avoir un <label>
! Cette information peut aussi ê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
(nom complet)given-name
(pour le prénom)additional-name
(prénom)family-name
(pour le nom)
- Exemple:
<input type="text" name="fname" autocomplete="given-name">
- utilisez l'un de ceux - ci pour
- Email
- 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 adresse entrée:
street-address
- pour deux adresses entrée:
address-line1
address-line2
address-level1
(état ou province)address-level2
(ville)postal-code
(zip code)country
- pour une adresse entrée:
- 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
- nom 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 l'inscription et changement de mot de passe formulaires)
- utilisez l'un de ceux - ci pour
Ressources
- norme HTML actuelle de WHATWG pour la saisie semi-automatique.
- "Créer d'Incroyables Formes" de Google. Semble être mis à jour presque quotidiennement. Excellente lecture.
- "aidez les utilisateurs à vérifier plus rapidement avec Autofill" de Google en 2015.
avec HTML5, une entrée autocomplete de style est possible sans Javascript!
Voir cet article: An HTML5-style "Google Suggest"
cependant, il n'est pas encore suffisamment soutenu. Les exemples de l'article ne fonctionneront qu'à L'Opéra pour le moment.
pour l'instant, il est probablement préférable d'utiliser simplement une bibliothèque bien testée avec un large support de navigateur comme jQuery UI, qui a un saisie semi-automatique widget.
j'ai suivi ce guide MSDN pour forcer l'entrée datalist pour n'autoriser que le texte qui correspond aux options dans le datalist. Il utilise L'API de Validation HTML Contrstraint: