--- title: slug: Web/HTML/Element/Input/search tags: - HTML - Input - Reference translation_of: Web/HTML/Element/input/search --- {{HTMLRef}} Les éléments {{HTMLElement("input")}} dont l'attribut `type` vaut **`search`** permettent à un utilisateur de saisir des termes de recherche. {{EmbedInteractiveExample("pages/tabbed/input-search.html", "tabbed-standard")}} ## Valeur La valeur de l'attribut {{htmlattrxref("value", "input")}} contient une chaîne de caractères ({{domxref("DOMString")}}) qui représente la valeur du champ de recherche. En JavaScript, on peut récupérer cette information grâce à la propriété {{domxref("HTMLInputElement.value")}}. ```js maRecherche.value; ``` Si aucune contrainte de validation n'est imposée (cf. {{anch("Validation")}} pour plus de détails), la valeur peut être un texte ou une chaîne de caractères vide. ## Attributs supplémentaires En complément des attributs communs à l'ensemble des éléments {{HTMLElement("input")}}, les champs de recherche prennent en charge les attributs suivants : | Attribut | Description | | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | `{{anch("maxlength")}}` | Le nombre de caractères maximal qui peut être écrit dans ce champ. | | `{{anch("minlength")}}` | Le nombre de caractères minimal qui peut être écrit dans ce champ pour qu'il soit considéré comme valide. | | `{{anch("pattern")}}` | Une expression rationnelle à laquelle doit correspondre le texte saisi pour être valide. | | `{{anch("placeholder")}}` | Une valeur d'exemple qui sera affichée lorsqu'aucune valeur n'est saisie. | | `{{anch("readonly")}}` | Un attribut booléen qui indique si le contenu du champ est en lecture seule. | | `{{anch("size")}}` | Un nombre qui indique le nombre de caractères affichés par le champ. | | `{{anch("spellcheck")}}` | Cet attribut contrôle l'activation de la vérification orthographique sur le champ ou si la vérification orthographique par défaut doit être appliquée. | ### {{htmlattrdef("maxlength")}} Le nombre maximum de caractères (exprimé en nombre de points de code UTF-16) que l'utilisateur peut saisir dans le champ. Cette valeur doit êtrer un entier positif ou nul. Si aucune valeur n'est fournie pour `maxlength` ou qu'une valeur invalide est fournie, il n'y a pas de contrainte de taille maximale. La valeur indiquée par cet attribut doit être supérieure à `minlength`. Le champ [ne sera pas valide](/fr/docs/Web/Guide/HTML/HTML5/Constraint_validation) si la longueur du texte dépasse `maxlength` en nombre de points de code UTF-16. Les contraintes de validation sont uniquement appliquées lorsque la valeur est modifiée par l'utilisateur. ### {{htmlattrdef("minlength")}} Le nombre minimal de caractères (exprimé en nombre de points de code UTF-16) que l'utilisateur peut saisir dans le champ. Cette valeur doit êtrer un entier positif ou nul. Si aucune valeur n'est fournie pour `minlength` ou qu'une valeur invalide est fournie, il n'y a pas de contrainte de taille minimale. La valeur indiquée par cet attribut doit être inférieur à `maxlength`. Le champ [ne sera pas valide](/fr/docs/Web/Guide/HTML/HTML5/Constraint_validation) si la longueur du texte est inférieure à `minlength` en nombre de points de code UTF-16. Les contraintes de validation sont uniquement appliquées lorsque la valeur est modifiée par l'utilisateur. ### {{htmlattrdef("pattern")}} {{page("/fr/docs/Web/HTML/Element/input/text", "pattern-include")}} Voir [la section sur l'utilisation de cet attribut ci-après](#format) pour plus d'exemples. {{page("/fr/docs/Web/HTML/Element/input/text", "placeholder", 0, 1, 2)}} {{page("/fr/docs/Web/HTML/Element/input/text", "readonly", 0, 1, 2)}} {{page("/fr/docs/Web/HTML/Element/input/text", "size", 0, 1, 2)}} ### {{htmlattrdef("spellcheck")}} {{page("/fr/docs/Web/HTML/Element/input/text", "spellcheck-include")}} ## Attributs non-standard Les attributs non-standard suivants sont disponibles pour les champs de recherche. Toutefois, vu leur caractère spécifique, mieux vaut ne pas les utiliser. | Attribut | Description | | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{{anch("autocorrect")}}` | Une chaîne de caractères qui indique si la correction automatique doit être appliquée à ce champ texte. **Uniquement pris en charge par Safari.** | | `{{anch("incremental")}}` | Cet attribut indique si des évènements {{event("search")}} doivent être envoyés afin de mettre à jour les résultats de la recherche tandis que l'utilisateur continue d'éditer la valeur du champ. **Uniquement WebKit et Blink (Safari, Chrome, Opera, etc.).** | | `{{anch("mozactionhint")}}` | Une chaîne de caractères qui indique le type d'action qui sera effectuée lorsque l'utilisateur appuiera sur la touche Entrée ou Retour lors de l'édition du champ. La valeur de cet attribut est utilisée comme libellé pour la touche adéquate du clavier virtuel. **Uniquement pris en charge par Firefox pour Android.** | | `{{anch("results")}}` | Le nombre maximum d'éléments qui devraient être affichés comme recherches précédentes dans la liste déroulante du champ. **Uniquement pris en charge par Safari.** | ### {{htmlattrdef("autocorrect")}} {{non-standard_inline}} {{page("/fr/docs/Web/HTML/Element/input/text", "autocorrect-include")}} ### {{htmlattrdef("incremental")}} {{non-standard_inline}} Un attribut booléen spécifique à WebKit et Blink qui indique à l'agent utilisateur de traiter la recherche en continu. Lorsque cet attribut est présent et lorsque l'utilisateur édite la valeur du champ, l'agent utilisateur envoie des évènements {{event("search")}} sur l'objet {{domxref("HTMLInputElement")}} qui représente le champ de recherche. Ainsi, on peut gérer, avec du code, la mise à jour continue des résultats de recherche. Si l'attribut `incremental` n'est pas indiqué, l'évènement {{event("search")}} est uniquement envoyé lorsque l'tuilisateur déclenche la recherche (en appuyant sur la touche Entrée ou Retour à l'édition du champ). La fréquence maximale à laquelle l'évènement `search` est envoyé est définie par chaque implémentation. ### {{htmlattrdef("mozactionhint")}} {{non-standard_inline}} {{page("/fr/docs/Web/HTML/Element/input/text", "mozactionhint-include")}} ### {{htmlattrdef("results")}} {{non-standard_inline}} L'attribut `results`, spécifique à Safari, est une valeur numérique qui permet de surcharger la valeur maximale du nombre de recherches précédentes affichées dans la liste déroulante des suggestions. Cette valeur doit être un nombre positif. Si cet attribut n'est pas fourni, ou que sa valeur est invalide, ce sera le maximum fourni par le navigateur qui sera utilisé. ## Utiliser un champ de recherche Les éléments `` de type `search` sont semblables aux éléments `` de type `text` mais sont spécifiquement destinés à la gestion des termes d'une recherche. ### Exemple simple ```html
``` Cet exemple produira le résultat suivant : {{EmbedLiveSample("Exemple_simple", 600, 40)}} `q` est la valeur standard utilisé pour l'attribut `name` des champs de recherche. Lorsque le formulaire est envoyée, les données envoyées au serveur auront la forme `q=termederecherche`. Il est nécessaire de fournir un nom (c'est-à-dire un attribut `name`) à un champ, sinon aucune information ne sera envoyée lors de l'envoi du formulaire. > **Note :** Il est toujours nécessaire de fournir une valeur pour l'attribut {{htmlattrxref("name","input")}} car sinon aucune valeur ne sera envoyée. ### Différences entre les champs de recherche et les champs texte La différence principale est la façon dont les navigateurs gèrent cet élément. Premièrement, certains navigateurs affiche une icône de croix dans la zone de saisie qui peut être utilisée pour retirer le terme de la recherche. Voici par exemple un aperçu de la fonctionnalité sous Chrome: ![](chrome-cross-icon.png) De plus, les navigateurs modernes proposent souvent une auto-complétion basée sur les termes de recherche déjà utilisés sur le site. Ainsi, quand on réutilise le champ, différentes suggestions peuvent être affichées et utilisées. Voici l'aperçu de cette fonctionnalité sous Firefox : ![](firefox-auto-complete.png) ### Ajouter un texte indicatif Il est possible de fournir un texte indicatif dans le champ de recherche afin de fournir une indication quant aux recherches qu'il est possible de faire. Pour cela, on ajoutera un texte avec l'attribut {{htmlattrxref("placeholder","")}}. Par exemple : ```html
``` Voici le résultat obtenu avec ce fragment HTML : {{EmbedLiveSample("Ajouter_un_texte_indicatif", 600, 40)}} ### Les champs de recherche et l’accessibilité Un des problèmes posé par les formulaires de recherche est leur accessibilité. En effet, dans la plupart des situations, il n'est pas nécessaire de fournir une étiquette indiquant le rôle de la recherche car le placement du champ rend son rôle clair ([voici un exemple](https://mdn.github.io/learning-area/accessibility/aria/website-aria-roles/)). En revanche, pour les personnes qui utilisent des technologies assistives, cela peut être source de confusion. Une façon de résoudre ce problème sans modifier l'organisation visuelle est d'utiliser les fonctionnalités [WAI-ARIA](/fr/docs/Learn/Accessibility/WAI-ARIA_basics) : - Utiliser un attribut `role` avec la valeur `search` sur l'élément `
` permettra aux lecteurs d'écran d'indiquer le formulaire comme étant un formulaire de recherche. - Si cela n'est pas suffisant, il est possible d'utiliser l'attribut `aria-label` sur l'élément ``. Cet attribut peut contenir un texte descriptif qui sera lu à voix haute par un lecteur d'écran. Il s'agit d'un équivalent non-visuel de `