Je sais qu'il existe de nombreuses solutions JavaScript, mais existe-t-il une méthode HTML5 pour avoir une entrée de texte avec saisie semi-automatique? L'élément datalist est presque ce que je recherche, sauf qu'il vous permet d'entrer des valeurs personnalisées plutôt que de vous limiter à ce qui est dans la liste.
HTML5 a un attribut autocomplete
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 seront suggérées lors des prochaines visites de cette page sur keyup
de chaque champ.
D'autres faits sur autocomplete
de W3Schools , ne détestez pas dans ce cas car cela couvre les bases:
Vous devriez essayer l'élément datalist
. Il est clairement défini dans Recommandation HTML5 W3C , probablement la meilleure option sur le bureau pour l'instant et dans un avenir proche.
L'élément datalist est connecté à un élément input en utilisant l'attribut list sur l'élément d'entrée.
Chaque élément d'option qui est un descendant de l'élément datalist, qui n'est pas désactivé et dont la valeur est une chaîne qui n'est pas la chaîne vide, représente une suggestion. Chaque suggestion a un valeur et un label .
Google chrome et chrome le prennent en charge depuis v21.x (En décembre 2014, la version actuelle est 39, vérifiez l'état de compatibilité de autres navigateurs ici) ) Firefox et Opera prend également en charge depuis longtemps. Modern (!) IE versions supporte partiellement datalist.
Démo: Un grand mise en œuvre de la base de données de travail par Eiji Kitamura.
Polyfill : consultez également le RelevantDropdown . Il s'agit d'un polyfill de liste de données 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>
Référence W3: https://www.w3.org/TR/html5/forms.html#the-datalist-element
Cette question est assez ancienne mais j'ai une réponse mise à jour pour 2017 !
Voici un lien vers l'officiel norme WHATWG HTML actuelle pour activer la saisie semi-automatique.
La réponse suivante est tirée de ma réponse originale d'ici: https://stackoverflow.com/a/41965106/169615
Tout ce que vous avez à faire maintenant pour déclencher la saisie semi-automatique est de nommer correctement votre balise input
.
Google a écrit un joli joli guide pour développer des applications Web qui sont conviviales pour les appareils mobiles. Ils ont une section sur la façon de nommer les entrées sur les formulaires pour utiliser facilement le remplissage automatique. Même s'il est écrit pour mobile, cela s'applique à la fois au bureau et au mobile!
Voici quelques points clés sur la façon d'activer la saisie semi-automatique:
<label>
pour tous vos <input>
champs autocomplete
à votre <input>
tags et remplissez-le à l'aide de cette guide .name
et autocomplete
pour tous les <input>
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="[email protected]" required autocomplete="email">
<!-- note that "emailC" will not be autocompleted -->
<label for="frmEmailC">Confirm Email</label>
<input type="email" name="emailC" id="frmEmailC"
placeholder="[email protected]" required autocomplete="email">
<label for="frmPhoneNumA">Phone</label>
<input type="tel" name="phone" id="frmPhoneNumA"
placeholder="+1-555-555-1212" required autocomplete="tel">
<input>
Mots clésAfin de déclencher la saisie semi-automatique, assurez-vous de nommer correctement les attributs name
et autocomplete
dans votre <input>
Mots clés. Cela permettra automatiquement la saisie semi-automatique sur les formulaires. Assurez-vous également d'avoir un <label>
! Cette information peut également être trouvée ici .
Voici comment nommer vos entrées:
name
: name fname mname lname
autocomplete
: name
(pour le nom complet)given-name
(pour le prénom)additional-name
(pour le deuxième prénom)family-name
(pour le nom de famille)<input type="text" name="fname" autocomplete="given-name">
name
: email
autocomplete
: email
<input type="text" name="email" autocomplete="email">
name
: address city region province state Zip zip2 postal country
autocomplete
: street-address
address-line1
address-line2
address-level1
(état ou province)address-level2
(ville)postal-code
(Code postal)country
name
: phone mobile country-code area-code exchange suffix ext
autocomplete
: tel
name
: ccname cardnumber cvc ccmonth ccyear exp-date card-type
autocomplete
: cc-name
cc-number
cc-csc
cc-exp-month
cc-exp-year
cc-exp
cc-type
name
: username
autocomplete
: username
name
: password
autocomplete
: current-password
(pour les formulaires de connexion)new-password
(pour les formulaires d'inscription et de changement de mot de passe)Avec HTML5, une saisie semi-automatique de style de suggestion Google est possible sans Javascript!
Voir cet article: "Une suggestion Google de style HTML5"
Cependant, il n'est pas encore suffisamment pris en charge. Les exemples de l'article ne fonctionneront qu'en Opera pour le moment.
Pour l'instant, il est probablement préférable d'utiliser simplement une bibliothèque bien testée avec une large prise en charge du navigateur comme JQuery UI, qui a un widget Autocomplete .
J'ai suivi ce guide MSDN pour appliquer l'entrée de la liste de données pour autoriser uniquement le texte correspondant aux options de la liste de données. Il exploite l'API de validation de contrainte HTML: