From 2727d3c76fd54476ecc29fc01b6ce3fe8e33b582 Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Wed, 13 Oct 2021 07:08:36 +0200 Subject: Prepare HTML section for Markdown conversion (#2628) * Remove summary classes * Remove useless spans * Remove notranslate * Fix element index page (cf en-US) * Align page vs en-US cf8bcd9 for CI * Remove hidden classes * remove ids * Fix notes - part 1 / n * Fix notes - part 2/2 * Fix warnings * fix dls and some other issues * Fix imgs and styles --- files/fr/web/html/element/input/button/index.html | 51 +++++---------- .../fr/web/html/element/input/checkbox/index.html | 76 +++++++++++----------- files/fr/web/html/element/input/color/index.html | 36 +++------- files/fr/web/html/element/input/date/index.html | 34 ++-------- .../html/element/input/datetime-local/index.html | 56 +++++----------- files/fr/web/html/element/input/email/index.html | 20 ++---- files/fr/web/html/element/input/file/index.html | 34 ++++------ files/fr/web/html/element/input/hidden/index.html | 14 ++-- files/fr/web/html/element/input/image/index.html | 12 ++-- files/fr/web/html/element/input/index.html | 19 ++---- files/fr/web/html/element/input/month/index.html | 41 +++++------- files/fr/web/html/element/input/number/index.html | 18 ++--- .../fr/web/html/element/input/password/index.html | 12 +--- files/fr/web/html/element/input/radio/index.html | 10 ++- files/fr/web/html/element/input/range/index.html | 57 +++++++--------- files/fr/web/html/element/input/reset/index.html | 25 +++---- files/fr/web/html/element/input/search/index.html | 26 +++----- files/fr/web/html/element/input/submit/index.html | 22 +++---- files/fr/web/html/element/input/tel/index.html | 64 ++++++++++-------- files/fr/web/html/element/input/text/index.html | 24 ++----- files/fr/web/html/element/input/time/index.html | 35 ++++------ files/fr/web/html/element/input/url/index.html | 25 +++---- files/fr/web/html/element/input/week/index.html | 16 ++--- 23 files changed, 280 insertions(+), 447 deletions(-) (limited to 'files/fr/web/html/element/input') diff --git a/files/fr/web/html/element/input/button/index.html b/files/fr/web/html/element/input/button/index.html index f86eba3bcf..02a4e420e0 100644 --- a/files/fr/web/html/element/input/button/index.html +++ b/files/fr/web/html/element/input/button/index.html @@ -11,33 +11,29 @@ translation_of: Web/HTML/Element/input/button ---
{{HTMLRef}}
-

Les éléments {{HTMLElement("input")}} de type button sont affichés comme des boutons poussoirs qui peuvent être programmés afin de contrôler des fonctionnalités de la page via un gestionnaire d'évènement (la plupart du temps pour l'évènement {{event("click")}}).

+

Les éléments {{HTMLElement("input")}} de type button sont affichés comme des boutons poussoirs qui peuvent être programmés afin de contrôler des fonctionnalités de la page via un gestionnaire d'évènement (la plupart du temps pour l'évènement {{event("click")}}).

{{EmbedInteractiveExample("pages/tabbed/input-button.html", "tabbed-shorter")}}
- -
-

Note : Bien que les éléments <input> de type "button" représentent toujours des éléments HTML valides, l'élément {{HTMLElement("button")}}, plus récent, est la meilleure méthode pour créer des boutons hors d'un formulaire. Il est aussi possible d'insérer des éléments HTML dans l'étiquette du bouton, ce qui permet notamment d'avoir des images.

+

Note : Bien que les éléments <input> de type "button" représentent toujours des éléments HTML valides, l'élément {{HTMLElement("button")}}, plus récent, est la meilleure méthode pour créer des boutons hors d'un formulaire. Il est aussi possible d'insérer des éléments HTML dans l'étiquette du bouton, ce qui permet notamment d'avoir des images.

Valeur

L'attribut {{htmlattrxref("value", "input")}} d'un t'el élément contient une chaîne de caractères qui est utilisée comme étiquette pour le bouton (autrement dit, comme texte affiché sur le bouton).

-
+

Exemple 1

<input type="button" value="Bouton cliquer">
-
-

{{EmbedLiveSample("summary-example3", 650, 30)}}

+

{{EmbedLiveSample("Exemple_1", 650, 30)}}

+

Exemple 2

Si on n'indique aucune valeur, le bouton sera vide :

-
<input type="button">
-
-

{{EmbedLiveSample("summary-example1", 650, 30)}}

+

{{EmbedLiveSample("Exemple_2", 650, 30)}}

Utiliser les boutons <input>

@@ -77,7 +73,6 @@ function updateBtn() {

Dans l'exemple qui suit, on définit s comme raccourci (autrement dit, il faudra appuyer sur la touche s avec une ou plusieurs touches supplémentaires qui dépendent du navigateur et du système d'exploitation, cf. accesskey pour la liste de ces touches).

-
<form>
   <input type="button" value="Démarrer la machine" accesskey="s">
 </form>
@@ -85,8 +80,7 @@ function updateBtn() {
 
-

{{EmbedLiveSample("Ajouter_des_raccourcis_clavier", 650, 100)}}

-

Note : Un problème de cet exemple est que l'utilisateur ne saura pas quelle touche utiliser comme raccourci. Dans un cas concret, cette information serait affichée ou fournie via un lien simple d'accès qui décrirait les raccourcis disponibles.

+

Note : Un problème de cet exemple est que l'utilisateur ne saura pas quelle touche utiliser comme raccourci. Dans un cas concret, cette information serait affichée ou fournie via un lien simple d'accès qui décrirait les raccourcis disponibles.

Désactiver et activer un bouton

Pour désactiver un bouton, il suffit d'ajouter l'attribut universel {{htmlattrxref("disabled")}} :

-
<input type="button" value="Je suis désactivé" disabled>
-

Il est possible d'activer ou de désactiver des boutons lors de de l'utilisation de la page en modifiant l'attribut disabled de l'élément dans le DOM. Dans l'exemple qui suit, le bouton est initialement activé et si on appuie dessus : il devient désactivé (c'est ce que fait la ligne de code btn.disabled = true). La fonction {{domxref("WindowTimers.setTimeout","setTimeout()")}} est ensuite utilisée afin de réinitialiser le bouton après deux secondes.

- -

{{EmbedLiveSample("Hidden_code_1", 650, 60)}}

+

{{EmbedLiveSample("Exemple_1", 650, 60)}}

Si l'attribut disabled n'est pas fourni, il est hérité depuis l'élément parent. De cette façon, on peut activer/désactiver des groupes d'éléments en les plaçant dans un conteneur (par exemple un élément {{HTMLElement("fieldset")}}) et en indiquant disabled sur le conteneur.

C'est ce qu'illustre l'exemple suivant. Il est semblable à l'exemple précédent mais l'attribut  disabled est activé sur l'élément <fieldset> lorsqu'on appuie sur le premier bouton. Les trois autres boutons sont donc désactivés pendant deux secondes.

- -

{{EmbedLiveSample("Hidden_code_2", 650, 60)}}

+

{{EmbedLiveSample("Exemple_2", 650, 60)}}

-

Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

+

Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

Validation

@@ -190,8 +177,7 @@ function disableBtn() { <p>Votre navigateur ne semble pas prendre en charge cette fonctionnalité.</p> </canvas> -
var canvas = document.querySelector('.myCanvas');
 var width = canvas.width = window.innerWidth;
diff --git a/files/fr/web/html/element/input/checkbox/index.html b/files/fr/web/html/element/input/checkbox/index.html
index 6961d790b7..a2e5726900 100644
--- a/files/fr/web/html/element/input/checkbox/index.html
+++ b/files/fr/web/html/element/input/checkbox/index.html
@@ -15,17 +15,15 @@ translation_of: Web/HTML/Element/input/checkbox
 
 
{{EmbedInteractiveExample("pages/tabbed/input-checkbox.html", "tabbed-standard")}}
- -
-

Note : Les boutons radio sont semblables aux cases à cocher mais il existe une différence importante : les boutons radio permettent de sélectionner une seule valeur parmi plusieurs alors que les cases à cocher permettent de cocher/décocher plusieurs valeurs d'un groupe.

+

Note : Les boutons radio sont semblables aux cases à cocher mais il existe une différence importante : les boutons radio permettent de sélectionner une seule valeur parmi plusieurs alors que les cases à cocher permettent de cocher/décocher plusieurs valeurs d'un groupe.

Valeur

Une chaîne de caractères ({{domxref("DOMString")}}) qui représente la valeur de la case à cocher. Cette chaîne de caractères n'est pas affichée côté client mais est envoyée au serveur comme valeur associée à la donnée envoyée avec le nom de la case à cocher. Par exemple :

-
<form>
+
<form>
   <div>
     <input type="checkbox" id="subscribeNews" name="subscribe" value="newsletter">
     <label for="subscribeNews">Souhaitez-vous vous abonner à la newsletter ?</label>
@@ -42,7 +40,7 @@ translation_of: Web/HTML/Element/input/checkbox
 

Si l'attribut value n'était pas renseigné, la valeur par défaut sera on (dans l'exemple, les données envoyées au serveur auraient la forme subscribe=on).

-

Note : Si la case à cocher n'est pas cochée lorsque le formulaire est envoyé, aucune valeur n'est envoyée au serveur pour indiquer cet état (autrement dit, le client n'envoie pas quelque chose comme value=unchecked) ; la valeur n'est pas transmise au serveur du tout.

+

Note : Si la case à cocher n'est pas cochée lorsque le formulaire est envoyé, aucune valeur n'est envoyée au serveur pour indiquer cet état (autrement dit, le client n'envoie pas quelque chose comme value=unchecked) ; la valeur n'est pas transmise au serveur du tout.

Attributs supplémentaires

@@ -90,7 +88,7 @@ translation_of: Web/HTML/Element/input/checkbox

Dans l'exemple qui suit, on affiche différentes cases à cocher pour représenter les intérets d'un utilisateur (voir l'exemple complet dans la section {{anch("Exemples")}}).

-
<fieldset>
+
<fieldset>
   <legend>Veuillez sélectionner vos intérêts :</legend>
   <div>
     <input type="checkbox" id="coding" name="interest" value="coding">
@@ -104,13 +102,13 @@ translation_of: Web/HTML/Element/input/checkbox
 
 

{{EmbedLiveSample('Gérer_plusieurs_cases_à_cocher', 600, 100)}}

-

Dans cet exemple on voit que chaque case à cocher utilise le même attribut name. Si les deux cases sont cochées lorsque le formulaire est envoyé, la chaîne des paires nom/valeur qui sera envoyée au serveur sera : interest=coding&interest=music. Lorsque les données parviennent au serveur, on peut ainsi récupérer un tableau des valeurs sélctionnées (voir Gérer plusieurs cases à cocher avec une seule variable côté serveur par exemple).

+

Dans cet exemple on voit que chaque case à cocher utilise le même attribut name. Si les deux cases sont cochées lorsque le formulaire est envoyé, la chaîne des paires nom/valeur qui sera envoyée au serveur sera : interest=coding&interest=music. Lorsque les données parviennent au serveur, on peut ainsi récupérer un tableau des valeurs sélctionnées (voir Gérer plusieurs cases à cocher avec une seule variable côté serveur par exemple).

Cocher certaines cases par défaut

Afin qu'une case à cocher soit sélectionnée par défaut, il suffit de placer l'attribut booléen checked. Voir l'exemple qui suit :

-
<fieldset>
+
<fieldset>
   <legend>Veuillez sélectionner vos intérêts</legend>
   <div>
     <input type="checkbox" id="coding" name="interest" value="coding" checked>
@@ -134,7 +132,7 @@ translation_of: Web/HTML/Element/input/checkbox
 
 

Il existe un état indéterminé pour les cases à cocher qui indique que la case n'est ni cochée, ni décochée mais indéterminéee. Cet état peut être obtenu via la propriété indeterminate d'un élément {{domxref("HTMLInputElement")}} en JavaScript (il est impossible d'obtenir cet état en utilisant uniquement du HTML) :

-
inputInstance.indeterminate = true;
+
inputInstance.indeterminate = true;

Dans la plupart des navigateurs, une case à cocher dans un état indéterminé est représentée avec une ligne horizontale en travers de la case.

@@ -148,40 +146,42 @@ translation_of: Web/HTML/Element/input/checkbox

Dans cet exemple, l'état indeterminate est utilisé afin d'indiquer qu'on possède certains ingrédients mais pas suffisamment pour une recette.

-
  var overall = document.querySelector('input[id="EnchTbl"]');
-  var ingredients = document.querySelectorAll('ul input');
+
+var overall = document.querySelector('input[id="EnchTbl"]');
+var ingredients = document.querySelectorAll('ul input');
 
-  overall.addEventListener('click', function(e) {
-    e.preventDefault();
-  });
+overall.addEventListener('click', function(e) {
+  e.preventDefault();
+});
 
-  for(var i = 0; i < ingredients.length; i++) {
-    ingredients[i].addEventListener('click', updateDisplay);
-  }
+for(var i = 0; i < ingredients.length; i++) {
+  ingredients[i].addEventListener('click', updateDisplay);
+}
 
-  function updateDisplay() {
-    var checkedCount = 1;
-    for(var i = 0; i < ingredients.length; i++) {
-      if(ingredients[i].checked) {
-        checkedCount++;
-      }
+function updateDisplay() {
+  var checkedCount = 1;
+  for(var i = 0; i < ingredients.length; i++) {
+    if(ingredients[i].checked) {
+      checkedCount++;
     }
-    if(checkedCount === 0) {
-      overall.checked = false;
-      overall.indeterminate = false;
-    } else if(checkedCount === ingredients.length) {
-      overall.checked = true;
-      overall.indeterminate = false;
-    } else {
-      overall.checked = false;
-      overall.indeterminate = true;
-    }
-  }
+ } + if(checkedCount === 0) { + overall.checked = false; + overall.indeterminate = false; + } else if(checkedCount === ingredients.length) { + overall.checked = true; + overall.indeterminate = false; + } else { + overall.checked = false; + overall.indeterminate = true; + } +} +

{{EmbedGHLiveSample("learning-area/html/forms/indeterminate-example/index.html", '100%', 200)}}

-

Note : Si vous envoyez un formulaire avec une case à cocher dans un état indéterminé, le résultat obtenu est le même que si la case avait été décochée : aucune donnée n'est envoyée au serveur.

+

Note : Si vous envoyez un formulaire avec une case à cocher dans un état indéterminé, le résultat obtenu est le même que si la case avait été décochée : aucune donnée n'est envoyée au serveur.

Validation

@@ -192,7 +192,7 @@ translation_of: Web/HTML/Element/input/checkbox

Dans l'exemple suivant, on développe l'exemple vu précédemment avec les groupes de cases à cocher : il y a cette fois plus d'options et un champ texte libre qui permet de saisir une autre valeur. Pour cela on utilise un bloc de code JavaScript et quelques règles CSS pour la mise en forme.

-
<form>
+
<form>
   <fieldset>
   <legend>Veuillez sélectionner vos intérêts</legend>
     <div>
@@ -226,7 +226,7 @@ translation_of: Web/HTML/Element/input/checkbox
   </fieldset>
 </form>
-
html {
+
html {
   font-family: sans-serif;
 }
 
@@ -263,7 +263,7 @@ legend {
 
 

JavaScript

-
var otherCheckbox = document.querySelector('input[value="other"]');
+
var otherCheckbox = document.querySelector('input[value="other"]');
 var otherText = document.querySelector('input[id="otherValue"]');
 otherText.style.visibility = 'hidden';
 
diff --git a/files/fr/web/html/element/input/color/index.html b/files/fr/web/html/element/input/color/index.html
index 3a06d2a084..4fe3dd2319 100644
--- a/files/fr/web/html/element/input/color/index.html
+++ b/files/fr/web/html/element/input/color/index.html
@@ -11,14 +11,12 @@ translation_of: Web/HTML/Element/input/color
 ---
 
{{HTMLRef}}
-

Les éléments {{HTMLElement("input")}} de type "color" permettent de sélectionner une couleur via une interface (un sélecteur de couleur) ou en saisissant le code hexadécimal de la couleur au format "#rrggbb". Ce format de valeur peut être utilisé en CSS.

+

Les éléments {{HTMLElement("input")}} de type "color" permettent de sélectionner une couleur via une interface (un sélecteur de couleur) ou en saisissant le code hexadécimal de la couleur au format "#rrggbb". Ce format de valeur peut être utilisé en CSS.

L'apparence du contrôle de sélection des couleurs peut grandement varier d'un navigateur à un autre et d'un système d'exploitation à un autre. Pour certains navigateurs, seul un champ textuel sera affiché afin de saisir le code de la couleur (avec des mécanismes de validation vérifiant le format), pour d'autres, ce sera le sélecteur de couleur du système d'exploitation qui sera utilisé et pour d'autres encore, ce sera un sélecteur de couleur spécifique.

{{EmbedInteractiveExample("pages/tabbed/input-color.html", "tabbed-standard")}}
- -

Valeur

L'attribut {{htmlattrxref("value", "input")}} d'un élément <input type="color"> est une chaîne de caractères sur 7 caractères qui correspond au code de la couleur en représentation hexadécimale RGB. Autrement dit, le premier caractère est un croisillon (#) , les deux suivants indiquent la composante rouge (R) de la couleur, les deux suivants indiquent la couleur verte (G pour Green en anglais) et les deux suivants indiquent la composante bleue (B) de la couleur. La valeur respecte nécessairement ce format et n'est jamais vide.

@@ -35,7 +33,7 @@ translation_of: Web/HTML/Element/input/color

Il est possible de créer un sélecteur de couleur qui emploie une valeur par défaut :

-
<input type="color" value="#ff0000">
+
<input type="color" value="#ff0000">

{{EmbedLiveSample("Fournir_une_couleur_par_défaut", 700, 30)}}

@@ -45,7 +43,7 @@ translation_of: Web/HTML/Element/input/color

Comme pour les différents éléments {{HTMLElement("input")}}, deux évènements peuvent être utilisés afin de détecter une modification de la couleur : {{event("input")}} et {{event("change")}}. input est déclenché sur l'élément <input> à chaque fois que la couleur change. L'évènement change est déclenché lorsque l'utilisateur ferme le sélecteur de couleur. Dans tous les cas, il est possible de déterminer la nouvelle valeur de l'élément grâce à {{domxref("HTMLInputElement.value", "value")}}.

-
colorPicker.addEventListener("input", updateFirst, false);
+
colorPicker.addEventListener("input", updateFirst, false);
 colorPicker.addEventListener("change", watchColorPicker, false);
 
 function watchColorPicker(event) {
@@ -57,23 +55,9 @@ function watchColorPicker(event) {
 
 

Sélectionner la valeur

-

Si l'implémentation du navigateur n'affiche pas de sélecteur de couleur mais un champ texte, il est possible de sélectionner la valeur du texte avec la méthode {{domxref("HTMLInputElement.select", "select()")}}. Si le navigateur affiche un sélecteur de couleur, select() ne fera rien.

- -
colorWell.select();
- -

Différences d'aspect

- -

Comme mentionné précédemment, lorsqu'un navigateur ne prend pas en charge l'affichage d'un sélecteur de couleur, c'est un champ texte qui sera affiché. Par exemple, sous Safari 10.1, on peut voir le résultat suivant :

- -

Screenshot of the example taken in Safari.

- -

Avec Firefox Firefox 55, on aura cet affichage :

- -

Screenshot of the example taken in Firefox 55 for macOS

- -

Pour ce deuxième cas, en cliquant sur le carré coloré, cela ouvrira le sélecteur de couleur natif du système d'exploitation :

+

Si l'implémentation du navigateur n'affiche pas de sélecteur de couleur mais un champ texte, il est possible de sélectionner la valeur du texte avec la méthode {{domxref("HTMLInputElement.select", "select()")}}. Si le navigateur affiche un sélecteur de couleur, select() ne fera rien. Soyez conscient⋅e de ce comportement afin d'adapter votre code à ce cas.

-

Screenshot of the element with the color picker open in Firefox Mac.

+
colorWell.select();

Validation

@@ -87,7 +71,7 @@ function watchColorPicker(event) {

Le fragment de code HTML utilisé est relativement simple. On utilise quelques paragraphes descriptifs ainsi qu'un élément {{HTMLElement("input")}} de type "color" dont l'identifiant est "colorWell" (c'est la valeur de cette couleur qu'on utilisera pour changer la couleur du texte des paragraphes).

-
<p>Un exemple qui illustre l'utilisation de <code>&lt;input type="color"&gt;</code>.</p>
+
<p>Un exemple qui illustre l'utilisation de <code>&lt;input type="color"&gt;</code>.</p>
 
 <label for="colorWell">Couleur :</label>
 <input type="color" value="#ff0000" id="colorWell">
@@ -102,7 +86,7 @@ function watchColorPicker(event) {
 
 

Tout d'abord, on établit certains variables : une pour la couleur du sélecteur et une autre couleur pour la couleur par défaut. On ajoute un gestionnaire {{event("load")}} afin de lancer les actions de démarrage lorsque la page est chargée.

-
var colorWell
+
var colorWell
 var defaultColor = "#0000ff";
 
 window.addEventListener("load", startup, false);
@@ -112,7 +96,7 @@ window.addEventListener("load", startup, false);
 
 

Lorsque la page est chargée, l'évènement "load" est déclenché et la fonction startup() est donc appelée :

-
function startup() {
+
function startup() {
   colorWell = document.querySelector("#colorWell");
   colorWell.value = defaultColor;
   colorWell.addEventListener("input", updateFirst, false);
@@ -129,7 +113,7 @@ window.addEventListener("load", startup, false);
 
 

On dispose de deux fonctions qui gèrent les modifications de couleurs. La fonction updateFirst() permet de répondre à l'évènement input et modifie la couleur du premier paragraphe dans le document en utilisant la nouvelle valeur saisie. Étant donné que les évènements input ont lieu à chaque fois qu'un ajustement est fait, cette fonction sera appelée sans cesse lorsque le sélecteur de couleur est utilisé.

-
function updateFirst(event) {
+
function updateFirst(event) {
   var p = document.querySelector("p");
 
   if (p) {
@@ -139,7 +123,7 @@ window.addEventListener("load", startup, false);
 
 

Lorsque le sélecteur est fermé, cela signifie que la valeur ne sera plus modifié avant une prochaine ouverture du sélecteur. Un évènement change est alors envoyé et cela déclenche alors l'appel de la fonction updateAll() :

-
function updateAll(event) {
+
function updateAll(event) {
   document.querySelectorAll("p").forEach(function(p) {
     p.style.color = event.target.value;
   });
diff --git a/files/fr/web/html/element/input/date/index.html b/files/fr/web/html/element/input/date/index.html
index bfc6bb094f..f8107d4b50 100644
--- a/files/fr/web/html/element/input/date/index.html
+++ b/files/fr/web/html/element/input/date/index.html
@@ -15,22 +15,8 @@ translation_of: Web/HTML/Element/input/date
 
 
{{EmbedInteractiveExample("pages/tabbed/input-date.html", "tabbed-shorter")}}
- -

L'apparence du contrôle affiché dépend du navigateur utilisé et la prise en charge de cette fonctionnalité est hétérogène (cf. la section {{anch("Compatibilité des navigateurs")}} pour plus de détails). Pour les navigateurs qui ne prennent pas en charge ce type d'élément <input>, c'est un simple <input type="text"> qui sera affiché.

-

Si votre navigateur actuel prend en charge cette fonctionnalité, voici ce à quoi ressemble le contrôle sous Chrome/Opera :

- -

- -

et pour Edge :

- -

- -

Le contrôle de sélection de date pour Firefox ressemble à :

- -

Interface utilisateur du sélecteur de date dans Firefox

-

Valeur

Une chaîne de caractères qui représente la valeur de la date saisie dans le contrôle. Le format à respecter est décrit dans dans cette section de l'article sur les formats. Il est possible de fournir une valeur par défaut en renseignant l'attribut {{htmlattrxref("value", "input")}} :

@@ -136,7 +122,7 @@ dateControl.value = '2017-06-01';

On ne peut donc ici que sélectionner une date en avril 2017. Seule la partie du contrôle consacrée aux jours sera éditable et on ne pourra pas sélectionner d'autres mois ou années..

-

Note : On devrait également pouvoir utiliser l'attribut {{htmlattrxref("step", "input")}} afin de faire varier le nombre de jours pour l'incrément de la date (par exemple afin de ne pouvoir sélectionner que les samedis). Cependant, cette fonctionnalité ne semble être présente dans aucune implémentation au moment où nous écrivons ces lignes.

+

Note : On devrait également pouvoir utiliser l'attribut {{htmlattrxref("step", "input")}} afin de faire varier le nombre de jours pour l'incrément de la date (par exemple afin de ne pouvoir sélectionner que les samedis). Cependant, cette fonctionnalité ne semble être présente dans aucune implémentation au moment où nous écrivons ces lignes.

Contrôler la taille du champ de saisie

@@ -168,10 +154,6 @@ dateControl.value = '2017-06-01';

{{EmbedLiveSample('Validation', 600, 100)}}

-

Voici une capture d'écran illustrant ce qui se produit dans un navigateur qui implémente cette fonctionnalité :

- -

-

Voici la feuille de style utilisée pour l'exemple. On utilise les pseudo-classes {{cssxref(":valid")}} et {{cssxref(":invalid")}} afin de mettre en forme un indicateur selon que la valeur est valide ou non. On place cet indicateur dans un élément {{htmlelement("span")}} séparé car pour Chrome, le contenu généré dans les pseudo-classes est intégré dans le contrôle du formulaire et ne peut être mis en forme ou affiché correctement.

div {
@@ -196,14 +178,12 @@ input:valid+span:after {
 }
-

Attention ! La validation des valeurs du formulaire HTML par le client ne remplace pas la validation côté serveur afin de vérifier que le format est bien celui attendu. Il est tout à fait possible de modifier le code HTML afin d'outrepasser ces mécanismes de validation ou d'envoyer directement des données au serveur. Il est donc nécessaire de valider les données lorsque celles-ci parviennent au serveur afin d'éviter les effets indésirables entraînés par l'injection de données mal formatées ou malveillantes.

+

Attention : La validation des valeurs du formulaire HTML par le client ne remplace pas la validation côté serveur afin de vérifier que le format est bien celui attendu. Il est tout à fait possible de modifier le code HTML afin d'outrepasser ces mécanismes de validation ou d'envoyer directement des données au serveur. Il est donc nécessaire de valider les données lorsque celles-ci parviennent au serveur afin d'éviter les effets indésirables entraînés par l'injection de données mal formatées ou malveillantes.

Gérer la prise en charge des navigateurs

-

Comme indiqué ci-avant, le principal problème qu'on rencontre avec ces contrôles est l'hétérogénéité de la prise en charge par les différents navigateurs. Par exemple, le sélecteur de date implémenté dans Firefox pour Android ressemblera à :

- -

+

Comme indiqué ci-avant, le principal problème qu'on rencontre avec ces contrôles est l'hétérogénéité de la prise en charge par les différents navigateurs.

Les navigateurs qui ne prennent pas en charge ces contrôles utiliseront à la place des champs texte. Toutefois, cette solution de contournement entraîne deux problèmes : le premier concerne l'homogénéité de l'interface utilisateur (le contrôle affiché ne sera pas le même) et le second concerne la gestion des données.

@@ -234,8 +214,7 @@ input:valid+span:after {

Si vous tentez d'envoyer ce formulaire, vous pourrez voir que le navigateur affiche un message d'erreur et met en évidence la valeur invalide si la valeur saisie ne correspond pas au motif nnnn-nn-nn (avec n un chiffre entre 0 et 9). Bien entendu, cela n'empêche pas de saisir des dates invalides ou mal formatées (par exemple avec le motif yyyy-dd-mm alors qu'on souhaiterait avoir yyyy-mm-dd). Il reste donc un problème.

-

C'est pour cela que la meilleure solution consiste à avoir trois champs de saisie distincts à destination de l'utilisateur : un pour saisir les jours, le deuxième pour les mois et un troisième pour l'année (chacun avec un élément ({{htmlelement("select")}}). On peut également opter pour l'utilisation d'un bibliothèque JavaScript telle que le sélecteur de date jQuery (jQuery date picker).

@@ -310,8 +288,7 @@ input:valid + span:after {

Les mois sont écrits « en dur » (ce sont toujours les mêmes) alors que les valeurs pour les jours et les années sont générées dynamiquement en fonction du mois et de l'année sélectionnées (voir les commentaires ci-après qui expliquent le détail des fonctions).

-

Une autre partie intéressante est celle où on détecte si le navigateur prend charge la fonctionnalité native <input type="date">. Pour cela, on crée un nouvelle élément {{htmlelement("input")}} et on change son type en date puis ensuite, on vérifie immédiatement la valeur de son type : pour les navigateurs qui ne prennent pas en charge l'élément natif, ils renverront la valeur text car l'élément natif aura été « converti ». Dans ce cas, on masque le sélecteur natif et on affiche le sélecteur alternatif (celui qui contient les éléments {{htmlelement("select")}}).

diff --git a/files/fr/web/html/element/input/datetime-local/index.html b/files/fr/web/html/element/input/datetime-local/index.html index bc4ab26cff..23f0f7da9a 100644 --- a/files/fr/web/html/element/input/datetime-local/index.html +++ b/files/fr/web/html/element/input/datetime-local/index.html @@ -16,8 +16,6 @@ translation_of: Web/HTML/Element/input/datetime-local
{{EmbedInteractiveExample("pages/tabbed/input-datetime-local.html", "tabbed-shorter")}}
- -

L'interface utilisateur du contrôle varie selon les navigateurs. La prise en charge de cette fonctionnalité est hétérogène : Chrome/Opera et Edge l'implémentent pour les navigateurs de bureau et la plupart des navigateurs mobiles l'implémentent. Pour les navigateurs qui n'implémentent pas cette fonctionnalité, le contrôle utilisé est celui de <input type="text">.

Les secondes ne sont pas prises en charge.

@@ -28,21 +26,11 @@ translation_of: Web/HTML/Element/input/datetime-local

Certains navigateurs pourront utiliser un contrôle avec un texte simple et vérifier que la valeur date/heure est correcte avant de l'envoyer au serveur. Toutefois, ce contrôle ayant lieu côté client, vous devrez nécessairement vérifier le bon format de la donnée côté serveur.

-

Voici, ci-après, un aperçu du contrôle obtenu dans un navigateur fonctionnel. En cliquant sur la flèche vers le bas, cela fait apparaître un sélecteur de date et il faut ensuite saisir l'heure manuellement. Pour Chrome / Opera :

- -

- -

Pour Edge, le contrôle associé à datetime-local se décompose en deux sélecteurs : un pour la date et un pour l'heure qui apparaissent quand on clique sur les éléments respectifs du champ :

- -

- -

-

Valeur

Une chaîne de caractères ({{domxref("DOMString")}}) qui représente la valeur de la date saisie dans le contrôle. Le format utilisable est décrit dans cette section de l'article sur les formats. Il est possible d'indiquer une date par défaut grâce à l'attribut {{htmlattrxref("value", "input")}} :

-
<label for="party">Veuillez saisir une date et une heure pour la fête :</label>
+
<label for="party">Veuillez saisir une date et une heure pour la fête :</label>
 <input id="party" type="datetime-local" name="partydate" value="2017-06-01T08:30">

{{EmbedLiveSample('Valeur', 600, 60)}}

@@ -50,12 +38,12 @@ translation_of: Web/HTML/Element/input/datetime-local

On notera ici que le format de la date affichée n'est pas celui utilisé pour écrire la valeur de l'attribut value. Le format d'affichage de la date sera choisi en fonction de la locale du système d'exploitation de l'utilisateur. En revanche, l'attribut value sera toujours formaté de la façon suivante : yyyy-MM-ddThh:mm. Lorsque la valeur est envoyée au serveur, elle aura donc ce format : partydate=2017-06-01T08:30.

-

Note : Attention si les données sont envoyées avec la méthode HTTP GET, les deux points (:) devront être échappés pour être intégrés dans les paramètres de l'URL. Avec l'exemple précédent, cela signifie qu'on enverra partydate=2017-06-01T08%3A30. Si on souhaite échapper une chaîne de caractères de la même façon en JavaScript, on pourra utiliser {{jsxref("Objets_globaux/encodeURI", "encodeURI()")}}.

+

Note : Attention si les données sont envoyées avec la méthode HTTP GET, les deux points (:) devront être échappés pour être intégrés dans les paramètres de l'URL. Avec l'exemple précédent, cela signifie qu'on enverra partydate=2017-06-01T08%3A30. Si on souhaite échapper une chaîne de caractères de la même façon en JavaScript, on pourra utiliser {{jsxref("Objets_globaux/encodeURI", "encodeURI()")}}.

En JavaScript, Il est également possible de définir la valeur de la date utilisée dans le contrôle via la propriété {{domxref("HTMLInputElement.value")}}. Par exemple :

-
var dateControl = document.querySelector('input[type="datetime-local"]');
+
var dateControl = document.querySelector('input[type="datetime-local"]');
 date.value = '2017-06-01T08:30';

Plusieurs méthodes, fournies par JavaScript (cf. {{jsxref("Date")}}), peuvent être utilisée afin de convertir des informations numériques en une telle chaîne de caractères (par exemple la méthode {{jsxref("Date.toISOString()")}}).

@@ -117,7 +105,7 @@ date.value = '2017-06-01T08:30';

Dans sa forme la plus simple, <input type="datetime-local"> peut s'utilisere avec un élément <input> et un élément {{htmlelement("label")}} comme ceci :

-
<form>
+
<form>
     <label for="party">Veuillez choisir une date et une heure pour la fête :</label>
     <input id="party" type="datetime-local" name="partydate">
 </form>
@@ -128,7 +116,7 @@ date.value = '2017-06-01T08:30';

Les attributs {{htmlattrxref("min", "input")}} et {{htmlattrxref("max", "input")}} permettent de restreindre la fenêtre de dates qu'il est possible de choisir. Dans l'exemple qui suit, on indique une date/heure minimale au 2017-06-01T08:30 et une date maximale au 2017-06-30T16:30:

-
  <form>
+
  <form>
     <label for="party">Veuillez choisir une date et une heure pour la fête :</label>
     <input id="party" type="datetime-local" name="partydate" min="2017-06-01T08:30" max="2017-06-30T16:30">
   </form>
@@ -143,7 +131,7 @@ date.value = '2017-06-01T08:30';
-

Note : L'attribut {{htmlattrxref("step", "input")}} devrait pouvoir être utilisé afin de faire varier l'incrément, en jours, pour sélectionner la date (par exemple afin de ne pouvoir sélectionner que les samedi). En revanche, à l'heure où nous rédigeons cet article, aucune implémentation ne semble proposer cette fonctionnalité.

+

Note : L'attribut {{htmlattrxref("step", "input")}} devrait pouvoir être utilisé afin de faire varier l'incrément, en jours, pour sélectionner la date (par exemple afin de ne pouvoir sélectionner que les samedi). En revanche, à l'heure où nous rédigeons cet article, aucune implémentation ne semble proposer cette fonctionnalité.

Contrôler la taille du champ

@@ -156,11 +144,11 @@ date.value = '2017-06-01T08:30';

Ainsi, si vous créez un système où l'utilisateur est déjà connecté et que le fuseau horaire est déjà connu, celui-ci peut être fourni via un champ de type hidden. Par exemple :

-
<input type="hidden" id="timezone" name="timezone" value="-08:00">
+
<input type="hidden" id="timezone" name="timezone" value="-08:00">

Sinon, on peut proposer la sélection d'un fuseau horaire grâce à un élément {{htmlelement("select")}} :

-
<select name="timezone_offset" id="timezone-offset" class="span5">
+
<select name="timezone_offset" id="timezone-offset" class="span5">
     <option value="-12:00">(GMT -12:00) Eniwetok, Kwajalein</option>
     <option value="-11:00">(GMT -11:00) Midway Island, Samoa</option>
     <option value="-10:00">(GMT -10:00) Hawaii</option>
@@ -175,7 +163,7 @@ date.value = '2017-06-01T08:30';

Dans ces deux situations, le fuseau horaire et la date sont transmis au serveur séparément (c'est côté serveur que le choix de la représentation pour le stockage est effectué).

-

Note : Le fragment de code précédent est tiré de Tous les fuseaux horaires du monde dans un élément <select>.

+

Note : Le fragment de code précédent est tiré de Tous les fuseaux horaires du monde dans un élément <select>.

Validation

@@ -186,7 +174,7 @@ date.value = '2017-06-01T08:30';

Prenons un exemple avec des dates mini/maxi et le champ obligatoire :

-
<form>
+
<form>
     <div>
         <label for="party">Veuillez choisir une date et une heure pour la fête (obligatoire, entre le 1er juin, 8h30 et le 30 juin, 16h30) :</label>
         <input id="party" type="datetime-local" name="partydate" min="2017-06-01T08:30" max="2017-06-30T16:30" required>
@@ -201,13 +189,10 @@ date.value = '2017-06-01T08:30';

{{EmbedLiveSample('Validation', 600, 120)}}

-

Voici une capture d'écran illustrant un message d'erreur dans un navigateur qui prend en charge cette fonctionnalité :

- -

Vous trouverez ensuite la feuille de style CSS utilisée pour l'exemple. On utilise les pseudo-classes {{cssxref(":valid")}} et {{cssxref(":invalid")}} afin de mettre en forme le contrôle selon que sa valeur est valide ou non. Les icônes indicatives sont placées dans un élément {{htmlelement("span")}} séparé car, sous Chrome, le contenu généré automatiquement est placé à l'intériur du contrôle et ne peut pas être affiché/mis en forme efficacement.

-
div {
+
div {
     margin-bottom: 10px;
     display: flex;
     align-items: center;
@@ -229,14 +214,13 @@ input:valid+span:after {
 }
-

Important : La validation des données du formulaire HTML par le navigateur ne doit pas remplacer la validation des données reçues sur le serveur ! En effet, il est tout à fait possible pour quelqu'un de modifier le document HTML afin d'outrepasser ces contraintes (voire d'envoyer directement des données au serveur sans passer par le formulaire HTML). Si les mécanismes, côté serveur, échouent à valider les données, cela pourrait avoir des conséquences néfastes sur le stockage ou la sécurité de l'application.

+

Attention : La validation des données du formulaire HTML par le navigateur ne doit pas remplacer la validation des données reçues sur le serveur ! En effet, il est tout à fait possible pour quelqu'un de modifier le document HTML afin d'outrepasser ces contraintes (voire d'envoyer directement des données au serveur sans passer par le formulaire HTML). Si les mécanismes, côté serveur, échouent à valider les données, cela pourrait avoir des conséquences néfastes sur le stockage ou la sécurité de l'application.

Gérer la prise en charge des navigateurs

-

Comme indiqué ci-avant, le principal problème qu'on rencontre avec ces contrôles est la prise en charge hétérogène des différents navigateurs : seuls Opera et Chrome implémentent cette fonctionnalité parmi les navigateurs de bureau et la plupart des navigateurs mobiles la prennent en charge. Voici, par exemple, l'interface utilisateur du sélecteur datetime-local de Firefox pour Android :

+

Comme indiqué ci-avant, le principal problème qu'on rencontre avec ces contrôles est la prise en charge hétérogène des différents navigateurs : seuls Opera et Chrome implémentent cette fonctionnalité parmi les navigateurs de bureau et la plupart des navigateurs mobiles la prennent en charge.

-

Les navigateurs qui n'implémentent pas cette fonctionnalité afficheront un contrôle de saisie textuelle. Toutefois, cela entraîne des problème de cohérence d'interface graphique d'une part et de représentation des données d'autre part.

@@ -255,7 +239,7 @@ input:valid+span:after {

Une façon de contourner ce problème est de placer un attribut {{htmlattrxref("pattern", "input")}} dans l'élément <input type="datetime-local">. Bien que cet élément n'utilise pas cet attribut, s'il est converti en <input type="text"> par le navigateur, le motif sera alors utilisé. Vous pouvez par exemple essayer le code suivant dans un navigateur qui ne prend pas en charge <input type="datetime-local"> :

-
<form>
+
<form>
   <div>
      <label for="party">Veuillez choisir une date et une heure pour la fête (obligatoire, entre le 1er juin, 8h30 et le 30 juin, 16h30) :</label>
     <input id="party" type="datetime-local" name="partydate"
@@ -277,8 +261,7 @@ input:valid+span:after {
 
 

Bref, il y a toujours un problème.

-

Actuellement, la meilleure façon de gérer les dates/heures d'une façon homogène pour les différents navigateurs est d'utiliser différents contrôles (via des éléments {{htmlelement("select")}}) pour sélectionner l'année, le jour, le mois, la date et l'heure. Il existe également des bibliothèques JavaScript telles que le sélecteur de date jQuery et le sélecteur d'heure jQuery.

@@ -313,7 +295,7 @@ input:valid + span:after {

Voici le fragment de code HTML utilisé :

-
<form>
+
<form>
   <div class="nativeDateTimePicker">
     <label for="party">Veuillez sélectionner une date et une heure pour la fête :</label>
     <input type="datetime-local" id="party" name="bday">
@@ -367,8 +349,7 @@ input:valid + span:after {
 
 

Les mois disponibles sont codés de façon statique (ce sont toujours les mêmes). En revanche, les valeurs pour les jours et les années sont générées dynamiquement selon le mois et l'année courante (voir les commentaires du script ci-après). Les heures et les minutes sont également générées dynamiquement.

-

Une partie intéressante du code est celle où on détecte la prise en charge de la fonctionnalité. Pour cela, dans le script, on crée un nouvel élément {{htmlelement("input")}} auquel on attribut le type datetime-local puis on vérifie son type juste après. Pour les navigateurs qui ne prennent pas en charge ce type de contrôle, le type aura changé et sera text. Si c'est le cas, on masque le contrôle natif et on utilise l'interface utilisateur alternative (composée avec les éléments ({{htmlelement("select")}})).

-
// On définit les différentes variables
+
// On définit les différentes variables
 var nativePicker = document.querySelector('.nativeDateTimePicker');
 var fallbackPicker = document.querySelector('.fallbackDateTimePicker');
 var fallbackLabel = document.querySelector('.fallbackLabel');
diff --git a/files/fr/web/html/element/input/email/index.html b/files/fr/web/html/element/input/email/index.html
index 84846c4aa5..2e6f223117 100644
--- a/files/fr/web/html/element/input/email/index.html
+++ b/files/fr/web/html/element/input/email/index.html
@@ -9,12 +9,10 @@ translation_of: Web/HTML/Element/input/email
 ---
 
{{HTMLRef}}
-

Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "email" permettent à un utilisateur de saisir et d'éditer une adresse mail ou, si l'attribut {{htmlattrxref("multiple", "input")}} est indiqué, une liste d'adresses mail. La valeur saisie est automatiquement validée afin de vérifier que le champ est vide ou que l'adresse (ou la liste d'adresses) est correcte. Les pseudo-classes CSS {{cssxref(":valid")}} et {{cssxref(":invalid")}} sont appliquées automatiquement selon le cas.

+

Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "email" permettent à un utilisateur de saisir et d'éditer une adresse mail ou, si l'attribut {{htmlattrxref("multiple", "input")}} est indiqué, une liste d'adresses mail. La valeur saisie est automatiquement validée afin de vérifier que le champ est vide ou que l'adresse (ou la liste d'adresses) est correcte. Les pseudo-classes CSS {{cssxref(":valid")}} et {{cssxref(":invalid")}} sont appliquées automatiquement selon le cas.

{{EmbedInteractiveExample("pages/tabbed/input-email.html", "tabbed-shorter")}}
- -

Note : Les navigateurs qui ne prennent pas en charge le type "email" emploieront un élément <input> "text" à la place.

@@ -236,9 +234,7 @@ translation_of: Web/HTML/Element/input/email

On peut également fournir une valeur par défaut en remplissant l'attribut {{htmlattrxref("value", "input")}} de l'élément :

-
<input type="email" value="default@example.com">
-

{{EmbedLiveSample("Fournir_une_option_par_défaut", 600, 40)}}

@@ -260,14 +256,12 @@ translation_of: Web/HTML/Element/input/email

Lorsqu'on utilise l'élément {{HTMLElement("datalist")}} et l'élément {{HTMLElement("option")}}, le navigateur affichera les adresses suggérées lors de la saisie, généralement sous la forme d'une liste déroulante ou d'une popup. Bien que les détails d'interface puissent dépendre de chaque navigateur, cliquer sur le champ d'édition affichera généralement la liste sous forme d'un volet déroulant. Ensuite, la liste est restreinte au fur et à mesure des caractères saisis.

-

Animation: Using keyboard entry to filter the list of suggested email addresses

-

Validation

Il existe deux niveaux de validation pour les champs de saisie de type "email". Tout d'abord, on a le niveau standard qui permet de vérifier automatiquement si l'adresse électronique est bien formatée. Ensuite, il est possible d'ajouter un filtre spécifique si besoin de répondre à des contraintes plus spécifiques.

-

Attention ! La validation du formulaire HTML par l'agent utilisateur ne saurait remplacer la vérification des données saisies côté serveur. En effet, il est relativement simple de modifier le document HTML avec son navigateur pour outrepasser les contraintes exprimées ici (quitte à les transmettre directement au serveur). Si les données ne sont pas vérifiées côté serveur, cela pourra entraîner des erreurs (valeurs trop grande, au mauvais format) voire des failles de sécurité.

+

Attention : La validation du formulaire HTML par l'agent utilisateur ne saurait remplacer la vérification des données saisies côté serveur. En effet, il est relativement simple de modifier le document HTML avec son navigateur pour outrepasser les contraintes exprimées ici (quitte à les transmettre directement au serveur). Si les données ne sont pas vérifiées côté serveur, cela pourra entraîner des erreurs (valeurs trop grande, au mauvais format) voire des failles de sécurité.

Validation simple

@@ -288,8 +282,7 @@ translation_of: Web/HTML/Element/input/email

Le navigateur vérifie d'une part que l'adresse électronique est une adresse correctement formatée et que celle-ci respecte l'expression rationnelle indiquée avec {{htmlattrxref("pattern", "input")}}. Voici un exemple d'application :

-
<form>
  <div class="emailBox">
@@ -333,9 +325,9 @@ label::after {
 
 

Si on regarde le champ de saisie pour l'adresse électronique, on voit que les deux attributs {{htmlattrxref("size", "input")}} et {{htmlattrxref("maxlength", "input")}} ont la valeur 64 (on affiche une boîte de saisie large de 64 caractères et on ne peut saisir une adresse électronique d'au plus 64 caractères). L'attribut {{htmlattrxref("required", "input")}} est présent et l'adresse électronique est donc obligatoire pour l'envoi du formulaire.

-

L'attribut {{htmlattrxref("placeholder", "input")}} indique qu'une valeur semblable à "nomutilisateur@beststartupever.com" est attendue. L'intérêt de cette valeur est double : on indique qu'il faut saisir une adresse mail et on suggère que cette adresse provient d'un compte beststartupever.com. Le type "email" permet de valider le texte saisi afin de vérifier qu'il s'agit d'une adresse électronique valide.  Si la valeur saisie n'est pas une adresse valide, un message d'erreur sera affiché :

+

L'attribut {{htmlattrxref("placeholder", "input")}} indique qu'une valeur semblable à "nomutilisateur@beststartupever.com" est attendue. L'intérêt de cette valeur est double : on indique qu'il faut saisir une adresse mail et on suggère que cette adresse provient d'un compte beststartupever.com. Le type "email" permet de valider le texte saisi afin de vérifier qu'il s'agit d'une adresse électronique valide. Si la valeur saisie n'est pas une adresse valide, un message d'erreur sera affiché :

-

+

Si on utilise uniquement les attributs qu'on vient de décrire, on restreint les valeurs saisissables aux adresses électroniques valides de 64 caractères. Or, on veut également valider le fait que l'adresse respecte le format "nomutilisateur@beststartupever.com". C'est pourquoi on utilise l'attribut {{htmlattrxref("pattern", "input")}} avec la valeur ".+@beststartupever.com". Cette valeur est une expression rationnelle qui permet de vérifier que la chaîne de caractère contient un ou plusieurs caractères quelconques, ensuite suivi d'une arobase (@) puis du nom de domaine "beststartupever.com".

@@ -345,7 +337,7 @@ label::after {

C'est pour cela qu'on indique la chaîne de caractères "Merci de fournir uniquement une adresse Best Startup Ever". Le message complet obtenu sera donc : "Le texte saisi ne correspond pas au motif requis. Merci de fournir uniquement une adresse Best Startup Ever."

-

+

Note : Si vous rencontrez des problèmes à propos de l'expression rationnelle, n'hésitez pas à ouvrir la console du navigateur. Cette dernière peut contenir des messages d'erreur aidant à diagnostiquer et résoudre le problème.

diff --git a/files/fr/web/html/element/input/file/index.html b/files/fr/web/html/element/input/file/index.html index 101a6a2f1b..924ba06e65 100644 --- a/files/fr/web/html/element/input/file/index.html +++ b/files/fr/web/html/element/input/file/index.html @@ -9,18 +9,16 @@ translation_of: Web/HTML/Element/input/file ---
{{HTMLRef}}
-

Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "file" permettent à un utilisateur de sélectionner un ou plusieurs fichiers depuis leur appareil et de les uploader vers un serveur via un formulaire ou grâce à du code JavaScript via l'API File.

+

Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "file" permettent à un utilisateur de sélectionner un ou plusieurs fichiers depuis leur appareil et de les uploader vers un serveur via un formulaire ou grâce à du code JavaScript via l'API File.

{{EmbedInteractiveExample("pages/tabbed/input-file.html", "tabbed-shorter")}}
- -

Valeur

L'attribut {{htmlattrxref("value", "input")}} contient une chaîne de caractères ({{domxref("DOMString")}}) qui représente le chemin du/des fichier(s) sélectionné(s). Les autres fichiers peuvent être identifiés grâce à la propriété HTMLInputElement.files.

-
Note : - +
+

Note :

  1. Si plusieurs fichiers sont sélectionnés, la chaîne de caractères représente le chemin du premier fichier sélectionné. Il est possible d'accéder aux autres fichiers en JavaScript grâce à la propriété FileList.
  2. Si aucun fichier n'est sélectionné, la chaîne de caractères sera vide ("").
  3. @@ -72,7 +70,9 @@ translation_of: Web/HTML/Element/input/file

    Une chaîne de caractères qui indique la caméra à utiliser pour capturer des photos et des vidéos si l'attribut accept indique que le fichier est de ce type. Lorsque capture vaut "user", cela indique que la caméra qui fait face à l'utilisateur devrait être utilisée. Si l'attribut vaut "environment", c'est la caméra qui est tournée vers l'extérieur devrait être utilisée. Si l'attribut est absent, l'agent utilisateur pourra décider de laquelle utiliser. Si la caméra souhaitée par l'attribut n'est pas disponible, l'agent utilisateur pourra utiliser une autre caméra de l'appareil.

    -
    Note : capture était auparavant un attribut booléen qui, lorsqu'il était présent, indiquait que les capteurs de l'appareil (caméra/micro) devaient être utilisés plutôt qu'un fichier.
    +
    +

    Note : capture était auparavant un attribut booléen qui, lorsqu'il était présent, indiquait que les capteurs de l'appareil (caméra/micro) devaient être utilisés plutôt qu'un fichier.

    +

    {{htmlattrdef("files")}}

    @@ -139,18 +139,16 @@ translation_of: Web/HTML/Element/input/file </div> </form>
-

Ce fragment de code HTML produira le résultat suivant :

{{EmbedLiveSample('Un_exemple_simple', 650, 60)}}

-

Note : Vous pouvez également trouver cet exemple sur GitHub — avec le code source et la démonstration.

+

Note : Vous pouvez également trouver cet exemple sur GitHub — avec le code source et la démonstration.

Quel que soit l'appareil ou le système d'exploitation de l'utilisateur, l'élément <input type="file"> fournit un bouton qui ouvre un sélecteur de fichier permettant de choisir un fichier.

@@ -204,24 +202,20 @@ translation_of: Web/HTML/Element/input/file </div> </form>
-

Voici le résultat produit :

{{EmbedLiveSample('Restreindre_les_types_de_fichiers_acceptés', 650, 60)}}

-

Note : Vous pouvez également consulter cet exemple sur GitHub — voir le code source et la démonstration live.

+

Note : Vous pouvez également consulter cet exemple sur GitHub — voir le code source et la démonstration live.

Le résultat peut sembler similaire à l'exemple précédent mais lorsque vous essayer de sélectionner un fichier, vous verrez que le sélecteur ne permet de sélectionner que les fichiers du/des type(s) indiqué(s) (il peut y avoir certaines différences selons les navigateurs et les systèmes d'exploitation).

-

Screenshot of a macOS file picker dialog. Files other than JPEG are grayed-out and unselectable.

-

L'attribut accept ne permet pas de valider/contrôler le type réel du/des fichier(s) sélectionné(s). Il fournit simplement une indication au navigateur pour aider l'utilisateur à sélectionner les bons fichiers. Toutefois, dans la plupart des cas, l'utilisateur peut toujours choisir une option dans le sélecteur afin de pouvoir choisir un fichier d'un autre type.

Dans tous les cas (et comme pour les autres éléments envoyés au serveur), il est nécessaire de contrôler les données reçues par un mécanisme de validation côté serveur.

@@ -245,7 +239,7 @@ input.value = "toto";

Dans l'exemple qui suit, on présente sélecteur de fichiers plus avancé, qui tire parti des informations disponibles grâce à la propriété HTMLInputElement.files. On montre aussi quelques astuces.

-

Note : Le code source complet de cet exemple est disponible sur GitHub — file-example.html (voir la démonstration live associée). Nous n'expliquerons pas ici la feuille de style CSS mais plutôt le code JavaScript qui contient la logique.

+

Note : Le code source complet de cet exemple est disponible sur GitHub — file-example.html (voir la démonstration live associée). Nous n'expliquerons pas ici la feuille de style CSS mais plutôt le code JavaScript qui contient la logique.

Tout d'abord, voici le fragment de code HTML utilisé :

@@ -263,8 +257,7 @@ input.value = "toto"; </div> </form>
-

Pour l'instant, le fragment HTML ressemble à ce que nous avons déjà vu avant, rien de spécial.

@@ -331,7 +323,7 @@ var preview = document.querySelector('.preview'); input.style.opacity = 0;
-

Note : La propriété opacity est utilisée pour masquer l'élément <input> plutôt que visibility: hidden ou display: none. En effet, avec ces derniers les technologies d'assistance (lecteurs d'écran par exemple) comprendraient que l'élément n'est pas interactif et ne peut pas être utilisé.

+

Note : La propriété opacity est utilisée pour masquer l'élément <input> plutôt que visibility: hidden ou display: none. En effet, avec ces derniers les technologies d'assistance (lecteurs d'écran par exemple) comprendraient que l'élément n'est pas interactif et ne peut pas être utilisé.

Ensuite, on ajoute un gestionnaire d'évènement à l'élément <input> afin de réaliser certaines actions lorsque sa valeur (c'est-à-dire les fichiers sélectionnés) change. Ici, le gestionnaire d'évènement appelle la fonction updateImageDisplay() que nous décrirons juste après.

diff --git a/files/fr/web/html/element/input/hidden/index.html b/files/fr/web/html/element/input/hidden/index.html index 159089ca79..5ec54ea676 100644 --- a/files/fr/web/html/element/input/hidden/index.html +++ b/files/fr/web/html/element/input/hidden/index.html @@ -12,25 +12,25 @@ translation_of: Web/HTML/Element/input/hidden

Les éléments {{HTMLElement("input")}} de type "hidden" permettent aux développeurs web d'inclure des données qui ne peuvent pas être vues ou modifiées lorsque le formulaire est envoyé. Cela permet par exemple d'envoyer l'identifiant d'une commande ou un jeton de sécurité unique. Les champs de ce type sont invisibles sur la page.

-

Note : La ligne de code suivante est suivie du rendu associé... si l'exemple fonctionne correctement, vous ne devriez rien voir :)

+

Note : La ligne de code suivante est suivie du rendu associé... si l'exemple fonctionne correctement, vous ne devriez rien voir :)

-
+

Exemple simple

+
<input id="prodId" name="prodId" type="hidden" value="xm234jq">
-

{{EmbedLiveSample('Basic_example', 600, 40)}}

+

{{EmbedLiveSample('Exemple_simple', 600, 40)}}

-
+

Note : Attention, les évènements DOM input et change ne s'appliquent pas à ce type de contrôle. Les champs masqués ne peuvent pas recevoir le focus, y compris en JavaScript avec hiddenInput.focus()).

-

Valeur

L'attribut {{htmlattrxref("value", "input")}} de l'élément contient une chaîne de caractères masquée qui est envoyée au serveur avec le formulaire. Cette valeur ne peut pas directement être éditée par l'utilisateur sur la page (mais elle est toujours accessible et modifiable via les outils de développement intégrés au navigateur).

-

Attention ! Bien que la valeur ne soit pas affichée sur la page, elle est visible et modifiable par l'utilisateur si ce dernier utilise les outils de développements intégrés aux navigateurs (par exemple "Afficher la source"). Le type hidden ne doit donc pas être utilisé comme mécanisme de sécurité.

+

Attention : Bien que la valeur ne soit pas affichée sur la page, elle est visible et modifiable par l'utilisateur si ce dernier utilise les outils de développements intégrés aux navigateurs (par exemple "Afficher la source"). Le type hidden ne doit donc pas être utilisé comme mécanisme de sécurité.

Attributs supplémentaires

@@ -157,7 +157,7 @@ textarea {

{{EmbedLiveSample('Exemples', '100%', 200)}}

-

Note : Vous pouvez consulter l'exemple sur GitHub (cf. le code source et la démonstration live).

+

Note : Vous pouvez consulter l'exemple sur GitHub (cf. le code source et la démonstration live).

Lorsque le formulaire est envoyé, les données envoyées au serveur ressembleront à :

diff --git a/files/fr/web/html/element/input/image/index.html b/files/fr/web/html/element/input/image/index.html index aa4a5acd16..4d3fac19f5 100644 --- a/files/fr/web/html/element/input/image/index.html +++ b/files/fr/web/html/element/input/image/index.html @@ -15,8 +15,6 @@ translation_of: Web/HTML/Element/input/image
{{EmbedInteractiveExample("pages/tabbed/input-image.html", "tabbed-standard")}}
- -

Valeur

Les éléments <input type="image"> n'acceptent pas de valeur pour l'attribut value. Le chemin vers l'image à afficher est indiqué grâce à l'attribut src.

@@ -190,7 +188,7 @@ translation_of: Web/HTML/Element/input/image

Prenons un exemple simple qui utilise les attributs strictement nécessaires (qui fonctionnent de la même façon que pour un élément <img>) :

-
<input id="image" type="image" width="100" height="30" alt="Login"
+
<input id="image" type="image" width="100" height="30" alt="Login"
        src="https://raw.githubusercontent.com/mdn/learning-area/master/html/forms/image-type-example/login.png">

{{EmbedLiveSample('Les_fonctionnalités_essentielles', 600, 50)}}

@@ -264,7 +262,7 @@ translation_of: Web/HTML/Element/input/image

Voici le fragment de code HTML utilisé :

-
<form>
+
<form>
   <p>Connectez-vous</p>
   <div>
     <label for="userId">Identifiant</label>
@@ -281,7 +279,7 @@ translation_of: Web/HTML/Element/input/image
 
 

Ensuite, on ajoute un feuille de style CSS pour mettre en forme les éléments :

-
div {
+
div {
   margin-bottom: 10px;
 }
 
@@ -300,7 +298,7 @@ label {
 
 

HTML

-
<form>
+
<form>
   <p>Connectez-vous</p>
   <div>
     <label for="userId">Identifiant</label>
@@ -317,7 +315,7 @@ label {
 
 

CSS

-
div {
+
div {
   margin-bottom: 10px;
 }
 
diff --git a/files/fr/web/html/element/input/index.html b/files/fr/web/html/element/input/index.html
index a2433db59b..54df76bc7d 100644
--- a/files/fr/web/html/element/input/index.html
+++ b/files/fr/web/html/element/input/index.html
@@ -16,9 +16,7 @@ translation_of: Web/HTML/Element/input
 
 
{{EmbedInteractiveExample("pages/tabbed/input-text.html", "tabbed-shorter")}}
- - -

Les différents types de champs <input>

+

Les différents types de champs <input>

La façon dont un élément <input> fonctionne dépend grandement de la valeur de son attribut type. Aussi, pour chacun de ces types, on aura une page de référence dédiée. Par défaut, lorsque l'attribut type n'est pas présent, il aura la valeur implicite text.

@@ -37,7 +35,8 @@ translation_of: Web/HTML/Element/input
  • {{HTMLElement("input/month", "month")}} : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un mois et une année (sans fuseau horaire).
  • {{HTMLElement("input/number", "number")}} : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un nombre.
  • {{HTMLElement("input/password", "password")}} : un champ texte sur une seule ligne dont la valeur est masquée. Les attributs maxlength et minlength définissent la taille maximale et minimale de la valeur à saisir dans le champ. -
    Note : Tout formulaire comportant des données sensibles doit être servi via HTTPS. Les navigateurs alertent les utilisateurs lorsque les formulaires avec de telles données sont uniquement disponibles via HTTP.
    +
    +

    Note : Tout formulaire comportant des données sensibles doit être servi via HTTPS. Les navigateurs alertent les utilisateurs lorsque les formulaires avec de telles données sont uniquement disponibles via HTTP.

  • {{HTMLElement("input/radio", "radio")}} : un bouton radio qui permet de sélectionner une seule valeur parmi un groupe de différentes valeurs.
  • {{HTMLElement("input/range", "range")}} : {{HTMLVersionInline("5")}} un contrôle qui permet de saisir un nombre dont la valeur exacte n'est pas importante.
  • @@ -145,7 +144,7 @@ translation_of: Web/HTML/Element/input

    Seul un élément du document peut avoir l'attribut autofocus. Il n'est pas possible d'utiliser l'attribut autofocus sur les champs de type hidden car ces derniers, masqués, ne peuvent pas avoir le focus.

    -

    Attention ! Le focus automatique sur un champ de formulaire peut être source de confusion, notamment pour les personnes qui utilisent des lecteurs d'écran. En effet, lorsque autofocus est utilisé, les lecteurs d'écran « téléportent » l'utilisateur sur le contrôle du champ, sans aucun avertissement.

    +

    Attention : Le focus automatique sur un champ de formulaire peut être source de confusion, notamment pour les personnes qui utilisent des lecteurs d'écran. En effet, lorsque autofocus est utilisé, les lecteurs d'écran « téléportent » l'utilisateur sur le contrôle du champ, sans aucun avertissement.

    {{htmlattrdef("disabled")}}

    @@ -188,7 +187,7 @@ let hatSize = form.elements["hat-size"];

    Avec ce code, la variable guestName correspondra à l'élément {{domxref("HTMLInputElement")}} du champ guest et hatSize à l'objet pour le champ hat-size.

    -

    Attention ! Il est préférable de ne pas utiliser de valeurs pour name qui correspondent à une propriété native de l'objet du DOM car cela surchargerait la propriété préexistante avec une référence au champ concerné.

    +

    Attention : Il est préférable de ne pas utiliser de valeurs pour name qui correspondent à une propriété native de l'objet du DOM car cela surchargerait la propriété préexistante avec une référence au champ concerné.

    Le nom _charset_ possède une signification spéciale. Si cette valeur est utilisée comme nom pour un élément <input> de type hidden, la valeur du champ (l'attribut value) sera automatiquememnt renseignée par l'agent utilisateur et correspondra à l'encodage utilisé pour envoyer le formulaire.

    @@ -205,12 +204,8 @@ let hatSize = form.elements["hat-size"];

    disabled et readonly sont bien différents : readonly permet d'avoir un contrôle fonctionnel mais non éditable alors que les champs disabled ne fonctionnent pas comme des contrôles.

    -
    -

    Notes :

    - -

    L'attribut required n'est pas autorisé sur les éléments <input> avec l'attribut readonly.

    - -

    Seuls les champs textuels peuvent être mis en lecture seule. En effet, pour les autres contrôles (ex. les case à cocher et les boutons radio), il n'y a pas de réelle différence entre l'application de readonly ou de disabled.

    +
    +

    Note : L'attribut required n'est pas autorisé sur les éléments <input> avec l'attribut readonly. Seuls les champs textuels peuvent être mis en lecture seule. En effet, pour les autres contrôles (ex. les case à cocher et les boutons radio), il n'y a pas de réelle différence entre l'application de readonly ou de disabled.

    {{htmlattrdef("required")}}

    diff --git a/files/fr/web/html/element/input/month/index.html b/files/fr/web/html/element/input/month/index.html index 301cc38dc0..6f21f8d10d 100644 --- a/files/fr/web/html/element/input/month/index.html +++ b/files/fr/web/html/element/input/month/index.html @@ -9,21 +9,19 @@ translation_of: Web/HTML/Element/input/month ---
    {{HTMLRef}}
    -

    Les éléments {{htmlelement("input")}} dont l'attribut type vaut "month" permettent de créer des contrôles où l'utilisateur peut saisir un mois et année. La valeur associée à un tel élément suit le format "YYYY-MM", où YYYY représente l'année sur quatre chiffre et MM le mois sur deux chiffres.

    +

    Les éléments {{htmlelement("input")}} dont l'attribut type vaut "month" permettent de créer des contrôles où l'utilisateur peut saisir un mois et année. La valeur associée à un tel élément suit le format "YYYY-MM", où YYYY représente l'année sur quatre chiffre et MM le mois sur deux chiffres.

    {{EmbedInteractiveExample("pages/tabbed/input-month.html", "tabbed-shorter")}}
    - -

    L'interface utilisateur associée à ce contrôle varie d'un navigateur à l'autre et la prise en charge de cette fonctionnalité reste encore hétérogène : seuls Chrome, Opéra et Edge implémentent cette fonctionnalité sur ordinateur et la plupart des navigateurs mobiles possèdent une implémentation. Pour les navigateurs qui ne prennent pas en charge cette fonctionnalité, l'élément sera transformé en un simple <input type="text">.

    Si votre navigateur ne prend pas en charge ce type d'élément, voici ensuite une capture d'écran de Chrome : cliquer sur la flèche vers le bas permettra de faire apparaître un sélecteur de date qui permettra de choisir le mois et l'année.

    -

    +

    Voici un aperçu du contrôle sous Edge :

    -

    +

    Valeur

    @@ -31,12 +29,12 @@ translation_of: Web/HTML/Element/input/month

    Il est possible de définir une valeur par défaut pour le contrôle en utilisant l'attribut {{htmlattrxref("value", "input")}} de la façon suivante :

    -
    +

    Exemple 1

    +
    <label for="bday-month">Quel est le mois de votre naissance ?</label>
     <input id="bday-month" type="month" name="bday-month" value="2017-06">
    -

    {{EmbedLiveSample('value-example-1', 600, 60)}}

    -
    +

    {{EmbedLiveSample('Exemple_1', 600, 60)}}

    On notera que la façon dont la date est affichée peut varier selon la locale de l'utilisateur et être présentée sous un format différent. En revanche, d'un point de vue technique, la valeur de l'attribut value suivra toujours le format YYYY-MM.

    @@ -44,17 +42,16 @@ translation_of: Web/HTML/Element/input/month

    Il est également possible de manipuler la date en JavaScript grâce à la propriété {{domxref("HTMLInputElement.value")}}. Par exemple :

    -
    - -
    var monthControl = document.querySelector('input[type="month"]');
    +
     
    -

    {{EmbedLiveSample("value-example-2", 600, 60)}}

    -
    +

    {{EmbedLiveSample("Exemple_2", 600, 60)}}

    Attributs supplémentaires

    @@ -150,7 +147,7 @@ monthControl.value = '1978-06';
    -

    Note : L'attribut {{htmlattrxref("step", "input")}} devrait pouvoir être utilisé afin d'ajuster le pas d'incrémentation (par exemple si on ne veut pouvoir sélectionner que les mois de début de trimestre). Toutefois, à l'heure où nous écrivons ces lignes, aucun navigateur ne semble prendre correctement en charge cette fonctionnalité.

    +

    Note : L'attribut {{htmlattrxref("step", "input")}} devrait pouvoir être utilisé afin d'ajuster le pas d'incrémentation (par exemple si on ne veut pouvoir sélectionner que les mois de début de trimestre). Toutefois, à l'heure où nous écrivons ces lignes, aucun navigateur ne semble prendre correctement en charge cette fonctionnalité.

    Contrôler la taille du champ

    @@ -183,7 +180,7 @@ monthControl.value = '1978-06';

    Voici une capture d'écran qui illustre le résultat obtenu avec un navigateur prenant en charge cette fonctionnalité :

    -

    +

    Voici ensuite la feuille de style CSS utilisée dans l'exemple précédent. On utilise {{cssxref(":valid")}} et {{cssxref(":invalid")}} afin de mettre en forme le contrôle selon que la valeur saisie est invalide. Les icônes ajoutées sont placées dans un élément {{htmlelement("span")}} à part car Chrome ne permet pas de gérer du contenu généré à même le contrôle ni de mettre en forme ce contenu généré.

    @@ -213,14 +210,14 @@ input:valid+span:after { }
    -

    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    Gérer la prise en charge des navigateurs

    Comme évoqué plus haut, le problème principal relatif à ces contrôles est l'absence partielle de prise en charge des navigateurs. Seuls Chrome, Opera et Edge supportent ce type de contrôle sur ordinateurs et la plupart des navigateurs mobiles le prennent en charge. À titre d'exemple, voici une capture d'écran du contrôle sous Chrome pour Android :

    -

    +

    Les navigateurs qui ne prennent pas en charge cette fonctionnalité basculent sur un contrôle textuel classique mais cela pose problème à la fois en termes de cohérence de l'interface utilisateur et aussi par rapport à la gestion des données.

    @@ -255,8 +252,7 @@ input:valid+span:after {

    De plus, cela présage que l'utilisateur comprenne le format dans lequel il faut saisir la valeur. Bref, le problème subsiste.

    -

    La meilleure façon de gérer la saisie de mois pour l'ensemble des navigateurs consiste actuellement à saisir le mois et l'année dans deux contrôles séparés, représentés chacun par un élément {{htmlelement("select")}}. On peut également utiliser certaines bibliothèques JavaScript telles que jQuery date picker ou le plugin jQuery timepicker.

    @@ -329,8 +324,7 @@ input:valid+span:after {

    Les mois sont représentés statiquement (ce sont toujours les mêmes) et les valeurs pour les années sont générées dynamiquement à partir de l'année courante (voir les commentaires dans le code suivant).

    -

    Une partie intéressante du code est celle qui permet de détecter la prise en charge de fonctionnalité. Pour détecter si le navigateur prend en charge ce contrôle, on crée un nouvel élément {{htmlelement("input")}} dont on modifie le type afin qu'il vaille month puis on vérifie immédiatement la valeur associée au type : les navigateurs qui ne prennent pas en charge la fonctionnalité renverront text car le champ month a automatiquement transformé en text. Si c'est le cas, on masque le sélecteur natif et on affiche le sélecteur alternatif (celui construit avec les éléments {{htmlelement("select")}}).

    diff --git a/files/fr/web/html/element/input/number/index.html b/files/fr/web/html/element/input/number/index.html index 3c2b06a291..8e9cbf1e5b 100644 --- a/files/fr/web/html/element/input/number/index.html +++ b/files/fr/web/html/element/input/number/index.html @@ -10,14 +10,12 @@ translation_of: Web/HTML/Element/input/number ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut number permettent à un utilisateur de saisir des nombres dans un formulaires. De tels contrôles incluent des mécanismes de validation natifs afin de rejeter les valeurs non-numériques. Le navigateur peut agrémenter le contrôle avec des flèches afin d'incrémenter/décrémenter la valeur grâce à la souris ou avec le doigt.

    +

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut number permettent à un utilisateur de saisir des nombres dans un formulaires. De tels contrôles incluent des mécanismes de validation natifs afin de rejeter les valeurs non-numériques. Le navigateur peut agrémenter le contrôle avec des flèches afin d'incrémenter/décrémenter la valeur grâce à la souris ou avec le doigt.

    {{EmbedInteractiveExample("pages/tabbed/input-number.html", "tabbed-shorter")}}
    - -
    -

    Note : Si un navigateur ne prend pas en charge le type number, le contrôle affiché sera le contrôle standard pour la saisie d'un texte (cf. text).

    +

    Note : Si un navigateur ne prend pas en charge le type number, le contrôle affiché sera le contrôle standard pour la saisie d'un texte (cf. text).

    Valeur

    @@ -81,7 +79,6 @@ translation_of: Web/HTML/Element/input/number

    {{htmlattrdef("step")}}

    -

    L'attribut step est un nombre qui définit la granularité de la valeur ou le mot-clé any. Seule les valeurs qui sont des multiples de cet attribut depuis le seuil {{anch("min")}} sont valides.

    Lorsque la chaîne de caractères any est utilisée, cela indique qu'aucun incrément spécifique n'est défini et que toute valeur (comprise entre {{anch("min")}} et {{anch("max")}}) est valide.

    @@ -89,7 +86,6 @@ translation_of: Web/HTML/Element/input/number

    Note : Lorsque les données saisies par l'utilisateur ne correspondent pas à l'incrément indiqué, l'agent utilisateur pourra arrondir à la valeur valide la plus proche (en choisissant les nombres les plus grands lorsque deux sont équidistants.

    -

    Pour les champs number, l'incrément par défaut est 1 et ne permet donc que de saisir des entiers si la valeur de base est entière. Ainsi, si on a min qui vaut -10 et value qui vaut 1.5, si on a step qui vaut 1, seules les valeurs 1.5, 2.5, 3.5,... -0.5, -1.5, -2.5,... seront valides.

    @@ -98,17 +94,15 @@ translation_of: Web/HTML/Element/input/number

    Les éléments <input type="number"> simplifient la saisie de valeurs numériques dans un formulaire. Lorsqu'on crée un tel contrôle, des mécanismes de validation automatiques sont appliqués afin de vérifier que le texte saisi est bien un nombre. Généralement un contrôle de saisie numérique incluera des boutons avec des curseurs pour augmenter/réduire la valeur.

    -

    Attention ! On notera qu'un utilisateur peut toujours saisir des valeurs qui ne sont pas numériques dans de tels champs (par exemple avec un navigateur de bureau). Toutefois, ce comportement semble différer selon les navigateurs (voir {{bug(1398528)}}). Les valeurs non-numériques seront considérées comme invalide (cf. {{anch("Validation")}} ci-après).

    +

    Attention : On notera qu'un utilisateur peut toujours saisir des valeurs qui ne sont pas numériques dans de tels champs (par exemple avec un navigateur de bureau). Toutefois, ce comportement semble différer selon les navigateurs (voir {{bug(1398528)}}). Les valeurs non-numériques seront considérées comme invalide (cf. {{anch("Validation")}} ci-après).

    -

    Note : Il est important de rappeler qu'un utilisateur peut tout à fait modifier le code HTML qui est utilisé. Le site ne doit donc pas se reposer sur les mécanismes de validation qui existent côté client pour considérer qu'une valeur est saine. Pour des raisons de contrôle et de sécurité, les valeurs envoyées via un formulaire doivent être vérifiées côté serveur.

    +

    Note : Il est important de rappeler qu'un utilisateur peut tout à fait modifier le code HTML qui est utilisé. Le site ne doit donc pas se reposer sur les mécanismes de validation qui existent côté client pour considérer qu'une valeur est saine. Pour des raisons de contrôle et de sécurité, les valeurs envoyées via un formulaire doivent être vérifiées côté serveur.

    De plus, les navigateurs mobiles peuvent adapter leur ergonomie en affichant un clavier adapté à la saisie de valeur numérique lorsque l'utilisateur appuie sur un tel contrôle. Voici le résultat qu'on obtient par exemple avec Firefox pour Android :

    -

    -

    Un contrôle simple

    Dans sa forme la plus simple, on peut implémenter un contrôle de saisie numérique avec le fragment HTML suivant :

    @@ -121,7 +115,7 @@ translation_of: Web/HTML/Element/input/number

    Un contrôle de saisie numérique considère que la valeur est valide si elle est vide ou quand un nombre est saisi. Dans les autres cas, la valeur est considérée invalide. Si l'attribut {{htmlattrxref("required", "input")}} est utilisé, la valeur vide n'est plus considérée valide.

    -

    Note : N'importe quel nombre est valide tant que c'est un nombre qui peut être représenté comme un nombre à virgule flottante (autrement dit, un nombre qui n'est pas {{jsxref("NaN")}} ou {{jsxref("Infinity")}}).

    +

    Note : N'importe quel nombre est valide tant que c'est un nombre qui peut être représenté comme un nombre à virgule flottante (autrement dit, un nombre qui n'est pas {{jsxref("NaN")}} ou {{jsxref("Infinity")}}).

    Indicateurs de saisie - placeholders

    @@ -249,7 +243,7 @@ input:valid+span:after {

    Ici, on a utilisé les pseudo-classes {{cssxref(":invalid")}} et {{cssxref(":valid")}} afin d'afficher une icône selon le cas, à côté de l'élément {{htmlelement("span")}} ajdacent. On utilise un élément <span> séparé pour plus de flexibilité : certains navigateurs n'affichent pas le contenu généré par les pseudo-classes pour certains types de contrôle (cf. <input type="date">).

    -

    Important : la validation des données des formulaires par le navigateur (côté client) doit toujours être complétée d'une validation des données côté serveur (l'utilisateur peut toujours modifier le HTML et envoyer les données au serveur).

    +

    Attention : la validation des données des formulaires par le navigateur (côté client) doit toujours être complétée d'une validation des données côté serveur (l'utilisateur peut toujours modifier le HTML et envoyer les données au serveur).

    Utilisation d'un motif de validation

    diff --git a/files/fr/web/html/element/input/password/index.html b/files/fr/web/html/element/input/password/index.html index 29df138c29..7585571836 100644 --- a/files/fr/web/html/element/input/password/index.html +++ b/files/fr/web/html/element/input/password/index.html @@ -15,8 +15,6 @@ translation_of: Web/HTML/Element/input/password
    {{EmbedInteractiveExample("pages/tabbed/input-password.html", "tabbed-standard")}}
    - -

    La façon dont le texte saisi est traité dépend du navigateur utilisé. Sur les appareils mobiles, par exemple, le caractère tapé est souvent laissé affiché un court instant afin que l'utilisateur puisse contrôler que c'est bien le bon caractère. Ainsi, même si le clavier est petit et viruel, on peut éviter de faire trop d'erreurs.

    @@ -30,7 +28,7 @@ translation_of: Web/HTML/Element/input/password

    Si l'attribut {{htmlattrxref("pattern", "input")}} est indiqué, le contenu du contrôle doit respecter l'expression rationnelle indiquée par l'attribut. Pour plus d'informations, voir la section {{anch("Validation")}} ci-après.

    -

    Note : Il n'est pas possible d'utiliser les caractères de fin de ligne (Line Feed) (code U+000A) et de retour chariot (Carriage Return) (code U+000D) dans la valeur d'un champ "password". Lorsqu'on saisit la valeur, ces caractères sont retirés si besoin.

    +

    Note : Il n'est pas possible d'utiliser les caractères de fin de ligne (Line Feed) (code U+000A) et de retour chariot (Carriage Return) (code U+000D) dans la valeur d'un champ "password". Lorsqu'on saisit la valeur, ces caractères sont retirés si besoin.

    Attributs supplémentaires

    @@ -115,7 +113,7 @@ translation_of: Web/HTML/Element/input/password

    {{EmbedLiveSample("Un_contrôle_basique", 600, 40)}}

    -

    Paramétrer l’autocomplétion

    +

    Paramétrer l'autocomplétion

    Afin de permettre au gestionnaire de mots de passe de saisir automatiquement le mot de passe, on pourra utiliser l'attribut {{htmlattrxref("autocomplete", "input")}}. Pour les mots de passe, celui-ci aura l'une des valeurs suivantes :

    @@ -130,12 +128,10 @@ translation_of: Web/HTML/Element/input/password
    Cette valeur indique au navigateur ou au gestionnaire de mots de passe qu'il faut générer un nouveau mot de passe et utiliser ce dernier pour remplir le champ. La génération automatique du mot de passe peut alors utiliser les autres attributs de l'élément. Cette valeur peut également être indiquée pour que le navigateur indique cette information d'un façon ou d'une autre.
    -
    <label for="userPassword">Mot de passe :</label>
     <input id="userPassword" type="password" autocomplete="current-password">
    -
    -

    {{EmbedLiveSample("Paramétrer_l’autocomplétion", 600, 40)}}

    +

    {{EmbedLiveSample("Paramétrer_l'autocomplétion", 600, 40)}}

    Rendre le champ obligatoire

    @@ -194,12 +190,10 @@ translation_of: Web/HTML/Element/input/password

    Dans cet exemple, il n'est possible de saisir qu'une valeur qui contient entre 4 et 8 caractères qui sont des caractères hexadécimaux.

    -
    <label for="hexId">Identifiant Hexa :</label>
     <input id="hexId" type="password" pattern="[0-9a-fA-F]{4,8}"
            title="Veuillez saisir un identifiant avec 4 à 8 chiffres hexadécimaux."
            autocomplete="nouveau-mot-de-passe">
    -

    {{EmbedLiveSample("Validation", 600, 40)}}

    diff --git a/files/fr/web/html/element/input/radio/index.html b/files/fr/web/html/element/input/radio/index.html index b5a3cf3c8c..8b8fd78f46 100644 --- a/files/fr/web/html/element/input/radio/index.html +++ b/files/fr/web/html/element/input/radio/index.html @@ -14,12 +14,10 @@ translation_of: Web/HTML/Element/input/radio
    {{EmbedInteractiveExample("pages/tabbed/input-radio.html", "tabbed-standard")}}
    - -

    On les appelle boutons radios par analogie avec les boutons qui étaient utilisés sur les anciens postes de radios.

    -

    Note : Les cases à cocher (checkboxes) ressemblent aux boutons radios. Toutefois, il existe une différence fondamentale : les boutons radio ne permettent de sélectionner qu'une seule option au sein d'un groupe alors que les cases à cocher permettent d'en sélectionner plusieurs.

    +

    Note : Les cases à cocher (checkboxes) ressemblent aux boutons radios. Toutefois, il existe une différence fondamentale : les boutons radio ne permettent de sélectionner qu'une seule option au sein d'un groupe alors que les cases à cocher permettent d'en sélectionner plusieurs.

    Valeur

    @@ -69,7 +67,7 @@ translation_of: Web/HTML/Element/input/radio

    Si l'attribut value n'est pas fourni dans le document HTML, la valeur par défaut utilisée sera on pour l'ensemble du groupe. Si c'était le cas avec notre exemple précédent et que l'utilisateur avait cliqué sur l'option « Téléphone » et envoyé le formulaire, les données envoyées auraient contenu "contact=on" ce qui ne s'avère pas très utile. Aussi, mieux vaut ne pas oublier les attributs value !

    -

    Note : Si aucun bouton radio n'est sélectionné au moment de l'envoi du formulaire, le groupe radio n'est pas inclus dans les données envoyées par le formulaire car il n'y a aucune valeur à fournir.

    +

    Note : Si aucun bouton radio n'est sélectionné au moment de l'envoi du formulaire, le groupe radio n'est pas inclus dans les données envoyées par le formulaire car il n'y a aucune valeur à fournir.

    Généralement, on souhaite qu'au moins une option soit sélectionné parmi les boutons d'un groupe et on inclue donc souvent un attribut checked sur l'un des boutons afin d'avoir une option sélectionnée par défaut.

    @@ -143,7 +141,7 @@ form.addEventListener("submit", function(event) {

    {{htmlattrdef("checked")}}

    -

    Un attribut booléen qui indique si c'est ce champ radio qui est sélectionné parmi le groupe.

    +

    Un attribut booléen qui indique si c'est ce champ radio qui est sélectionné parmi le groupe.

    À la différence des autres navigateurs, Firefox conservera l'état coché dynamique d'un bouton radio au fur et à mesure des chargements de la page. On pourra utiliser l'attribut {{htmlattrxref("autocomplete","input")}} afin de contrôler cette fonctionnalité.

    @@ -184,7 +182,7 @@ form.addEventListener("submit", function(event) {

    Ici, c'est le premier bouton radio qui sera sélectionné par défaut.

    -

    Note : Si l'attribut checked est placé sur plus d'un bouton, c'est le dernier bouton contenant l'attribut qui sera sélectionné. C'est donc l'ordre des valeurs qui déterminera la valeur par défaut. Pour rappel, il ne peut y avoir qu'un seul bouton radio du groupe qui soit sélectionné à un instant donné.

    +

    Note : Si l'attribut checked est placé sur plus d'un bouton, c'est le dernier bouton contenant l'attribut qui sera sélectionné. C'est donc l'ordre des valeurs qui déterminera la valeur par défaut. Pour rappel, il ne peut y avoir qu'un seul bouton radio du groupe qui soit sélectionné à un instant donné.

    Fournir une plus grande zone de sélection

    diff --git a/files/fr/web/html/element/input/range/index.html b/files/fr/web/html/element/input/range/index.html index eae6bb4f32..04f159c62d 100644 --- a/files/fr/web/html/element/input/range/index.html +++ b/files/fr/web/html/element/input/range/index.html @@ -14,8 +14,6 @@ translation_of: Web/HTML/Element/input/range

    {{EmbedInteractiveExample("pages/tabbed/input-range.html", "tabbed-standard")}}

    - -

    Si le navigateur de l'utilisateur ne prend pas en charge le type range, il utilisera le type text à la place.

    Valeur

    @@ -101,18 +99,18 @@ translation_of: Web/HTML/Element/input/range

    Par défaut, la granularité vaut 1, ce qui signifie que la valeur est toujours un entier. Cela peut être modifié grâce à l'attribut {{htmlattrxref("step")}} qui permet de contrôler la granularité. Ainsi, si on souhaite une valeur comprise entre 5 et 10 et précise avec deux chiffres après la virgule, on pourra utiliser l'attribut step avec la valeur 0.01 :

    -
    +

    Exemple 1

    <input type="range" min="5" max="10" step="0.01">
    -

    {{EmbedLiveSample("Granularity_sample1", 600, 40)}}

    -
    +

    {{EmbedLiveSample("Exemple_1", 600, 40)}}

    + +

    Exemple 2

    Si on souhaite prendre en charge n'importe quelle valeur, quel que soit le nombre de décimales, on pourra utiliser la valeur any pour l'attribut step :

    -
    <input type="range" min="0" max="3.14" step="any">
    -

    {{EmbedLiveSample("Granularity_sample2", 600, 40)}}

    +

    {{EmbedLiveSample("Exemple_2", 600, 40)}}

    Cet exemple permet à l'utilisateur de choisir une valeur entre 0 et 3.14 sans aucune restriction quant à la partie décimale.

    @@ -140,7 +138,7 @@ translation_of: Web/HTML/Element/input/range
     <input type="range">
    - Screenshot of a plain slider control on macOS + Capture d'écran d'un contrôle curseur sur macOS @@ -175,7 +173,7 @@ translation_of: Web/HTML/Element/input/range </datalist>
    - Screenshot of a plain slider control on macOS + Capture d'écran un contrôle curseur sur macOS @@ -210,7 +208,7 @@ translation_of: Web/HTML/Element/input/range </datalist>
    - Screenshot of a plain slider control on macOS + Capture d'écran un contrôle curseur sur macOS @@ -221,47 +219,41 @@ translation_of: Web/HTML/Element/input/range

    Modifier l'orientation du curseur

    - +

    La spécification HTML recommande de dessiner les contrôles verticalement lorsque la hauteur de celui-ci est supérieure à la largeur. Malheureusement, aucun navigateur ne prend actuellement en charge cette fonctionnalité directement. On peut toutefois dessiner un contrôle vertical en appliquant une rotation sur un contrôle horizontal avec du code CSS et notamment {{cssxref("transform")}} pour tourner l'élément.

    -
    -

    HTML

    +

    Autre exemple

    + +
    HTML

    Il est nécessaire de placer l'élément {{HTMLElement("input")}} dans un élément {{HTMLElement("div")}} afin de corriger la disposition une fois la transformation appliquée :

    @@ -269,7 +261,7 @@ translation_of: Web/HTML/Element/input/range <input type="range" min="0" max="11" value="7" step="1"> </div>
    -

    CSS

    +
    CSS

    Ensuite, on applique quelques règles CSS. Voici la règle CSS pour l'élément div qui indique le mode d'affichage et la taille qu'on souhaite avoir pour que la page soit correctement organisée..

    @@ -292,10 +284,9 @@ Ensuite, on applique une transformation sur l'élément <input>Le contrôle mesure alors 150 pixels de long et 20 pixels de haut. Les marges sont nulles et {{cssxref("transform-origin")}} est décalé vers le milieu du contrôle. Le contrôle mesurant 150 pixels de large, décaler le centre de rotation permet d'avoir la zone de destination centrée avec 75 pixels de chaque côté.

    -

    Résultat

    +
    Résultat
    -

    {{EmbedLiveSample("Orientation_sample3", 200, 200, "https://mdn.mozillademos.org/files/14987/Orientation_sample3.png")}}

    -
    +

    {{EmbedLiveSample("Autre_exemple", 200, 200, "orientation_sample3.png")}}

    Validation

    diff --git a/files/fr/web/html/element/input/reset/index.html b/files/fr/web/html/element/input/reset/index.html index fe37b12b8b..3b8ac2bf95 100644 --- a/files/fr/web/html/element/input/reset/index.html +++ b/files/fr/web/html/element/input/reset/index.html @@ -10,33 +10,30 @@ translation_of: Web/HTML/Element/input/reset ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} de type "reset" sont affichés sous la forme de boutons permettant de réiniatiliser l'ensemble des champs du formulaire avec leurs valeurs initiales.

    +

    Les éléments {{HTMLElement("input")}} de type "reset" sont affichés sous la forme de boutons permettant de réiniatiliser l'ensemble des champs du formulaire avec leurs valeurs initiales.

    {{EmbedInteractiveExample("pages/tabbed/input-reset.html", "tabbed-standard")}}
    - -
    -

    Note : Il est généralement peu recommandé d'inclure des boutons de réinitialisation dans les formulaires. En effet, ils sont rarement utiles et peuvent être source de frustration lorsqu'on appuie dessus involontairement.

    +

    Note : Il est généralement peu recommandé d'inclure des boutons de réinitialisation dans les formulaires. En effet, ils sont rarement utiles et peuvent être source de frustration lorsqu'on appuie dessus involontairement.

    Valeur

    La valeur de l'attribut value d'un élément <input type="reset"> contient une chaîne de caractères ({{domxref("DOMString")}}) utilisée comme texte sur le bouton.

    -
    +

    Exemple 1

    <input type="reset" value="Réinitialiser le formulaire">
    -
    -

    {{EmbedLiveSample("summary-example3", 650, 30)}}

    +

    {{EmbedLiveSample("Exemple_1", 650, 30)}}

    Si aucune valeur n'est indiquée, le bouton aura le texte par défaut « Réinitialiser » :

    -
    +

    Exemple 2

    +
    <input type="reset">
    -
    -

    {{EmbedLiveSample("summary-example1", 650, 30)}}

    +

    {{EmbedLiveSample("Exemple_2", 650, 30)}}

    Utiliser les boutons de réinitialisation

    @@ -83,25 +80,23 @@ translation_of: Web/HTML/Element/input/reset

    {{EmbedLiveSample("Ajouter_un_raccourci_au_bouton", 650, 100)}}

    -

    Note : Le problème d'un tel raccourci est que l'utilisateur ne saura pas quelle touche clavier correspond au raccourci. Dans une situation réaliste, il est nécessaire de fournir l'information via un autre biais (sans interférer avec le design du site), par exemple grâce à un lien qui pointe vers la liste des différents raccourcis utilisés sur le site.

    +

    Note : Le problème d'un tel raccourci est que l'utilisateur ne saura pas quelle touche clavier correspond au raccourci. Dans une situation réaliste, il est nécessaire de fournir l'information via un autre biais (sans interférer avec le design du site), par exemple grâce à un lien qui pointe vers la liste des différents raccourcis utilisés sur le site.

    Désactiver/Activer un bouton

    Pour désactiver un bouton de réinitialisation, il suffit d'appliquer l'attribut {{htmlattrxref("disabled")}} sur l'élément :

    -
    <input type="reset" value="Désactivé" disabled>
    -

    On peut activer/désactiver le bouton lors de la navigation sur la page avec JavaScript en modifiant la valeur de l'attribut disabled pour la passer de true à false et vice versa (par exemple avec une instruction telle que btn.disabled = true).

    -

    Note : Pour plus d'exemples concernant l'activation/la désactivation de bouton, vous pouvez consulter la page <input type="button">.

    +

    Note : Pour plus d'exemples concernant l'activation/la désactivation de bouton, vous pouvez consulter la page <input type="button">.

    -

    Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

    +

    Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

    Validation

    diff --git a/files/fr/web/html/element/input/search/index.html b/files/fr/web/html/element/input/search/index.html index 5707359a30..ea54004693 100644 --- a/files/fr/web/html/element/input/search/index.html +++ b/files/fr/web/html/element/input/search/index.html @@ -9,12 +9,10 @@ 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.

    +

    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")}}.

    @@ -175,11 +173,11 @@ translation_of: Web/HTML/Element/input/search

    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:

    -

    +

    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 :

    -

    +

    Ajouter un texte indicatif

    @@ -226,7 +224,7 @@ translation_of: Web/HTML/Element/input/search

    Il n'y a aucune différence visuelle avec l'exemple précédent mais avec cette deuxième version, les personnes qui utilisent un lecteur d'écran disposeront de plus d'informations.

    -

    Note : Voir Signposts/Landmarks pour plus d'informations à propos de ces fonctionnalités relatives à l'accessibilité.

    +

    Note : Voir Signposts/Landmarks pour plus d'informations à propos de ces fonctionnalités relatives à l'accessibilité.

    Paramétrer la taille physique

    @@ -248,7 +246,7 @@ translation_of: Web/HTML/Element/input/search

    Les éléments <input> de type search possèdent les mêmes fonctionnalités de validation que les éléments <input type="text">. Il existe peu de raison de contraindre les termes d'une recherche mais voici quelques cas.

    -

    Note : Attention, la validation des données d'un formulaire de recherche HTML par le client ne doit pas remplacer la vérification de ces données lorsqu'elles sont reçues sur le serveur. En effet, il est tout à fait possible pour quelqu'un de modifier le code HTML de la page pour outrepasser les mécanismes de validation. Il est également possible d'envoyer des données directement au serveur. Si le serveur ne valide pas les données reçues, des données potentiellement mal formatées pourraient causer des dommages aux bases de données et autres composants sensibles.

    +

    Note : Attention, la validation des données d'un formulaire de recherche HTML par le client ne doit pas remplacer la vérification de ces données lorsqu'elles sont reçues sur le serveur. En effet, il est tout à fait possible pour quelqu'un de modifier le code HTML de la page pour outrepasser les mécanismes de validation. Il est également possible d'envoyer des données directement au serveur. Si le serveur ne valide pas les données reçues, des données potentiellement mal formatées pourraient causer des dommages aux bases de données et autres composants sensibles.

    Une note sur la mise en forme

    @@ -282,8 +280,7 @@ input:valid ~ span:after { </div> </form>
    -

    Voici le résultat obtenu :

    @@ -306,7 +302,7 @@ input:valid ~ span:after {

    De plus, si on essaie d'envoyer le formulaire sans aucun terme de recherche, le navigateur affichera un message. Voici par exemple, le résultat dans Firefox :

    -

    form field with attached message that says Please fill out this field

    +

    Champ de formulaire avec un message attaché indiquant 'veuillez remplir ce formulaire'

    Différents messages peuvent être affichés selon le type d'erreur liée à la saisie.

    @@ -327,8 +323,7 @@ input:valid ~ span:after { </div> </form>
    -

    Voici le résultat obtenu avec ce fragment de code HTML :

    @@ -368,8 +362,7 @@ input:valid ~ span:after { </div> </form>
    -

    Voici le résultat obtenu avec ce fragment HTML :

    diff --git a/files/fr/web/html/element/input/submit/index.html b/files/fr/web/html/element/input/submit/index.html index 20b704d1de..0dea8aeac7 100644 --- a/files/fr/web/html/element/input/submit/index.html +++ b/files/fr/web/html/element/input/submit/index.html @@ -11,13 +11,13 @@ translation_of: Web/HTML/Element/input/submit ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "submit" sont affichés comme des boutons permettant d'envoyer les données d'un formulaire. Cliquer sur un tel bouton déclenchera l'envoi des données du formulaire vers le serveur.

    +

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "submit" sont affichés comme des boutons permettant d'envoyer les données d'un formulaire. Cliquer sur un tel bouton déclenchera l'envoi des données du formulaire vers le serveur.

    + +

    Exemple simple

    -
    <input type="submit" value="Envoyer le formulaire">
    -
    -

    {{EmbedLiveSample("summary-example2", 650, 30)}}

    +

    {{EmbedLiveSample("Exemple_simple", 650, 30)}}

    Valeur

    @@ -25,11 +25,11 @@ translation_of: Web/HTML/Element/input/submit

    Si on n'indique aucune valeur, ce sera un texte par défaut (dépendant du navigateur) qui sera utilisé ainsi que du système d'éxploitation:

    -
    +

    Exemple avec valeur par défaut

    +
    <input type="submit">
    -
    -

    {{EmbedLiveSample("summary-example1", 650, 30)}}

    +

    {{EmbedLiveSample("Exemple_avec_valeur_par_défaut", 650, 30)}}

    Attributs supplémentaires

    @@ -178,25 +178,23 @@ translation_of: Web/HTML/Element/input/submit

    {{EmbedLiveSample("Ajouter_un_raccourci_clavier", 650, 100)}}

    -

    Note : Un problème de cet exemple est que l'utilisateur ne saura pas quelle touche utiliser comme raccourci. Dans un cas concret, cette information serait affichée ou fournie via un lien simple d'accès qui décrirait les raccourcis disponibles.

    +

    Note : Un problème de cet exemple est que l'utilisateur ne saura pas quelle touche utiliser comme raccourci. Dans un cas concret, cette information serait affichée ou fournie via un lien simple d'accès qui décrirait les raccourcis disponibles.

    Activer et désactiver un bouton d'envoi

    Si on souhaite désactiver un bouton, il sufft d'utiliser l'attribut booléen universel {{htmlattrxref("disabled")}} :

    -
    <input type="submit" value="Disabled" disabled>
    -

    Pour activer / désactiver le bouton dynamiquement, on pourra manipuler l'attribut DOM disabled avec la valeur true ou false en JavaScript (avec une instruction similaire à btn.disabled = true).

    -

    Note : Voir la page <input type="button"> pour plus d'exemples concernant l'activation/désactivation des boutons liés à un formulaire.

    +

    Note : Voir la page <input type="button"> pour plus d'exemples concernant l'activation/désactivation des boutons liés à un formulaire.

    -

    Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

    +

    Note : À la différence des autres navigateurs, Firefox conservera un état désactivé obtenu de façon dynamique lorsque la page est rechargée. L'attribut {{htmlattrxref("autocomplete","button")}} peut être utilisé afin de contrôler cette fonctionnalité.

    Validation

    diff --git a/files/fr/web/html/element/input/tel/index.html b/files/fr/web/html/element/input/tel/index.html index 04e08e0a6d..14356c7762 100644 --- a/files/fr/web/html/element/input/tel/index.html +++ b/files/fr/web/html/element/input/tel/index.html @@ -11,12 +11,10 @@ translation_of: Web/HTML/Element/input/tel ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "tel" permettent à un utilisateur de saisir un numéro de téléphone. Contrairement aux contrôles utilisés pour <input type="email"> et <input type="url"> , la valeur saisie n'est pas automatiquement validée selon un format donné car les formats des numéros de téléphone varient à travers le monde.

    +

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "tel" permettent à un utilisateur de saisir un numéro de téléphone. Contrairement aux contrôles utilisés pour <input type="email"> et <input type="url"> , la valeur saisie n'est pas automatiquement validée selon un format donné car les formats des numéros de téléphone varient à travers le monde.

    {{EmbedInteractiveExample("pages/tabbed/input-tel.html", "tabbed-standard")}}
    - -

    Note : Les navigateurs qui ne prennent pas en charge le type "tel" utiliseront à la place un contrôle de type "text".

    @@ -129,20 +127,34 @@ translation_of: Web/HTML/Element/input/tel

    Les numéros de téléphone peuvent jouer un rôle important dans certains formulaires web. Un site de commerce en ligne, par exemple, peut vouloir enregistrer le numéro de téléphone d'un utilisateur pour le contacter lors de la livraison. Toutefois, un des problèmes relatifs aux numéros de téléphone est la variété de formats qui existent à travers le monde. Il est donc difficile (voire impossible) de valider les valeurs automatiquement.

    -

    Note : Des mécanismes de validation particuliers peuvent être ajoutés si besoin (cf. {{anch("Validation")}} ci-après).

    +

    Note : Des mécanismes de validation particuliers peuvent être ajoutés si besoin (cf. {{anch("Validation")}} ci-après).

    Claviers adaptés

    -

    L'un des avantages des contrôles de type tel est qu'ils permettent aux navigateurs mobiles de proposer un clavier adapté à la saisie de numéros de téléphone. Voici par exemple le clavier obtenu avec Firefox pour Android :

    +

    L'un des avantages des contrôles de type tel est qu'ils permettent aux navigateurs mobiles de proposer un clavier adapté à la saisie de numéros de téléphone.

    -

    + + + + + + + + + + + + + + +
    Exemples de claviers adaptés sur appareils mobiles.
    Firefox pour AndroidWebKit iOS (Safari/Chrome/Firefox)
    Capture d'écran pour Firefox pour AndroidCapture d'écran pour Firefox pour iOS

    Un contrôle simple

    Dans sa forme la plus simple, on peut implémenter un tel contrôle avec ce fragment HTML :

    -
    <input id="telNo" name="telNo" type="tel">
    +
    <input id="telNo" name="telNo" type="tel">

    {{EmbedLiveSample('Un_contrôle_simple', 600, 40)}}

    @@ -154,7 +166,7 @@ translation_of: Web/HTML/Element/input/tel

    Dans l'exemple suivant, on a un contrôle "tel" avec un attribut placeholder qui vaut "01 23 45 67 89". Vous pouvez manipuler le résultat obtenu pour voir comment ce texte est affiché selon qu'une valeur saisie ou que le champ est vide :

    -
    <input id="telNo" name="telNo" type="tel"
    +
    <input id="telNo" name="telNo" type="tel"
            placeholder="01 23 45 67 89">

    {{EmbedLiveSample('Textes_indicatifs_-_placeholders', 600, 40)}}

    @@ -167,7 +179,7 @@ translation_of: Web/HTML/Element/input/tel

    La taille physique de la boîte de saisie peut être contrôlée avec l'attribut {{htmlattrxref("size", "input")}}. La valeur de cet attribut indique le nombre de caractères que la boîte peut afficher simultanément. Si, par exemple, on souhaite que le contrôle mesure 20 caractères de large, on pourra utiliser le code suivant :

    -
    <input id="telNo" name="telNo" type="tel"
    +
    <input id="telNo" name="telNo" type="tel"
            size="20">

    {{EmbedLiveSample('La_taille_physique', 600, 40)}}

    @@ -178,23 +190,21 @@ translation_of: Web/HTML/Element/input/tel

    Dans l'exemple qui suit, on crée un contrôle qui mesure 20 caractères de large et dont le contenu doit être plus long que 9 caractères et plus court que 14 caractères.

    -
    <input id="telNo" name="telNo" type="tel"
    +
    <input id="telNo" name="telNo" type="tel"
            size="20" minlength="9" maxlength="14">

    {{EmbedLiveSample("La_longueur_de_la_valeur", 600, 40)}}

    -

    Note : Ces deux attributs jouent un rôle lors de la {{anch("validation", "Validation")}}. Dans l'exemple précédent, la valeur sera considérée comme invalide si elle contient moins de 9 caractères ou plus de 14. La plupart des navigateurs ne permettront pas de saisir une valeur plus longue que la taille maximale.

    +

    Note : Ces deux attributs jouent un rôle lors de la {{anch("validation", "Validation")}}. Dans l'exemple précédent, la valeur sera considérée comme invalide si elle contient moins de 9 caractères ou plus de 14. La plupart des navigateurs ne permettront pas de saisir une valeur plus longue que la taille maximale.

    Fournir une valeur par défaut

    Il est possible de fournir une valeur par défaut en renseignant au préalable l'attribut {{htmlattrxref("value", "input")}} :

    -
    -
    <input id="telNo" name="telNo" type="tel"
    +
    <input id="telNo" name="telNo" type="tel"
            value="01 23 45 67 89">
    -

    {{EmbedLiveSample("Fournir_une_valeur_par_défaut", 600, 40)}}

    @@ -202,7 +212,7 @@ translation_of: Web/HTML/Element/input/tel

    Si on souhaite aller plus loin, on peut fournir une liste de suggestions parmi lesquelles l'utilisateur pourra choisir (il pourra également saisir la valeur de son choix si celle-ci ne fait pas partie de la liste). Pour cela, on utilisera l'attribut {{htmlattrxref("list", "input")}} dont la valeur est l'identifiant d'un élément  {{HTMLElement("datalist")}} qui contient autant d'éléments  {{HTMLElement("option")}} que de valeurs suggérées. C'est la valeur de l'attribut value de chaque élément <option> qui sera utilisée comme suggestion.

    -
    <input id="telNo" name="telNo" type="tel" list="defaultTels">
    +
    <input id="telNo" name="telNo" type="tel" list="defaultTels">
     
     <datalist id="defaultTels">
       <option value="01 23 45 67 89">
    @@ -219,13 +229,15 @@ translation_of: Web/HTML/Element/input/tel
     
     

    Comme évoqué ci-avant, il est difficile de fournir une solution qui convienne pour l'ensemble des formats utilisés et qui permette de valider correctement les numéros de téléphone.

    -
    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.
    +
    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Rendre la valeur obligatoire

    Il est possible de rendre la saisie obligatoire avant de pouvoir envoyer le formulaire. Pour cela, on utilisera l'attribut {{htmlattrxref("required", "input")}} :

    -
    <form>
    +
    <form>
       <div>
         <label for="telNo">Veuillez saisir un numéro de téléphone (obligatoire) : </label>
         <input id="telNo" name="telNo" type="tel" required>
    @@ -238,7 +250,7 @@ translation_of: Web/HTML/Element/input/tel
     
     

    On utilisera la feuille de style suivante pour indiquer les éléments valides ou invalides du formulaire :

    -
    div {
    +
    div {
       margin-bottom: 10px;
       position: relative;
     }
    @@ -268,13 +280,13 @@ input:valid+span:after {
     
     

    {{EmbedLiveSample("Rendre_la_valeur_obligatoire", 700, 70)}}

    -

    Utiliser un format particulier

    +

    Utiliser un format particulier

    Si on souhaite restreindre le format de la valeur qui peut être saisie, on peut utiliser l'attribut {{htmlattrxref("pattern","input")}} dont la valeur est une expression rationnelle que la valeur doit respecter pour être valide.

    Dans cet exemple, on utilisera la même feuille de style que précédemment mais le code HTML sera celui-ci :

    -
    <form>
    +
    <form>
       <div>
         <label for="telNo">Veuillez saisir un numéro de téléphone (obligatoire) : </label>
         <input id="telNo" name="telNo" type="tel" required
    @@ -286,8 +298,7 @@ input:valid+span:after {
       </div>
     </form>
    -

    {{EmbedLiveSample("Utiliser_un_format_particulier", 700, 70)}}

    @@ -324,7 +334,7 @@ input:valid+span:after {

    Chaque boîte de saisie possède un attribut {{htmlattrxref("placeholder","input")}} qui indique le format pressenti. On utilise également l'attribut {{htmlattrxref("pattern","input")}} afin d'indiquer le nombre de caractères ainsi qu'un attribut aria-label qui pourra être lu par un lecteur d'écran ete qui décrit quoi saisir dans le contrôle.

    -
    <form>
    +
    <form>
       <div>
         <label for="country">Veuillez choisir votre pays :</label>
         <select id="country" name="country">
    @@ -361,7 +371,7 @@ input:valid+span:after {
     
     

    Le code JavaScript associé est relativement simple, il contient un gestionnaire d'évènements {{domxref("GlobalEventHandlers.onchange", "onchange")}} qui est déclenché lorsque la valeur du <select> est modifiée. Il met alors à jour les attributs pattern, placeholder, aria-label du contrôle pour adapter le format attendu au pays choisi.

    -
    var selectElem = document.querySelector("select");
    +
    var selectElem = document.querySelector("select");
     var inputElems = document.querySelectorAll("input");
     
     selectElem.onchange = function() {
    @@ -415,8 +425,7 @@ selectElem.onchange = function() {
     
     

    Bien entendu, si cette complexité est trop importante, on peut également faire le choix de contrôler la valeur côté serveur avant de faire un retour à l'utilisateur.

    -

    Résumé technique

    diff --git a/files/fr/web/html/element/input/text/index.html b/files/fr/web/html/element/input/text/index.html index 21e8cb6692..8e33c53029 100644 --- a/files/fr/web/html/element/input/text/index.html +++ b/files/fr/web/html/element/input/text/index.html @@ -10,12 +10,10 @@ translation_of: Web/HTML/Element/input/text ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "text" permettent de créer des champs de saisie avec du texte sur une seule ligne.

    +

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "text" permettent de créer des champs de saisie avec du texte sur une seule ligne.

    {{EmbedInteractiveExample("pages/tabbed/input-text.html", "tabbed-standard")}}
    - -

    Valeur

    L'attribut {{htmlattrxref("value", "input")}} d'un tel élément contient une chaîne de caractères ({{domxref("DOMString")}}) qui correspond à la valeur contenue dans le champ texte. En JavaScript, cette valeur peut être récupérée avec la propriété JavaScript {{domxref("HTMLInputElement.value","value")}}.

    @@ -82,7 +80,6 @@ translation_of: Web/HTML/Element/input/text

    {{htmlattrdef("pattern")}}

    -

    L'attribut pattern est une expression rationnelle que doit respecter la valeur ({{htmlattrxref("value")}}) du champ afin d'être valide. Cette expression rationnelle doit être une expression rationnelle valide pour JavaScript (telle qu'utilisée par {{jsxref("RegExp")}} et telle que documentée dans ce guide). Le marqueur 'u' est fourni par le navigateur lors de la compilation de l'expression rationnelle afin que le motif soit traité comme une séquence de points de code Unicode plutôt que comme des caractères ASCII. Aucune barre oblique (/) ne devrait être utilisée autour du motif.

    Si l'expression rationnelle est invalide ou que cet attribut n'est pas défini, l'attribut est ignoré.

    @@ -90,7 +87,6 @@ translation_of: Web/HTML/Element/input/text

    Note : L'attribut {{htmlattrxref("title", "input")}} pourra être utilisé afin d'afficher une bulle d'informations qui explique les conditions à respecter. Il est également conseillé d'inclure un texte explicatif à proximité du champ.

    -

    Voir la section sur l'utilisation de cet attribut ci-après pour plus d'exemples.

    @@ -120,7 +116,6 @@ translation_of: Web/HTML/Element/input/text

    {{htmlattrdef("spellcheck")}}

    -

    spellcheck est un attribut universel qui est utilisé afin d'indiquer si la vérification orthographique doit être utilisée pour un élément. Il peut être utilisé pour n'importe quel contenu éditable mais possède certaines spécificités pour les éléments {{HTMLElement("input")}}. Les valeurs autorisées pour cet attribut sont :

    @@ -135,7 +130,6 @@ translation_of: Web/HTML/Element/input/text

    Un champ de saisie peut avoir la vérification orthographique activée s'il ne possède pas l'attribut {{anch("readonly")}} et qu'il n'est pas désactivé.

    La valeur renvoyée par l'attribut spellcheck peut ne pas refléter l'état réel de la vérification ortographique si certaines préférences de l'agent utilisateur surchargent le paramétrage par défaut.

    -

    Attributs non-standard

    @@ -162,7 +156,6 @@ translation_of: Web/HTML/Element/input/text

    {{htmlattrdef("autocorrect")}} {{non-standard_inline}}

    -

    Un attribut spécifique à Safari, sous la forme d'une chaîne de caractères, qui indique si la correction automatique doit être appliquée lors de l'édition du champ. Les valeurs autorisées pour cet attribut sont :

    @@ -171,11 +164,9 @@ translation_of: Web/HTML/Element/input/text
    off
    Toute correction automatique et tout remplacement de texte est désactivé.
    -

    {{htmlattrdef("mozactionhint")}} {{non-standard_inline}}

    -

    Un attribut spécifique à Mozilla (et plus particulièrement Firefox pour Android) qui fournit une indication quant au type d'action effectuée lorsque l'utilisateur appuie sur la touche Entrée ou Retour lors de l'édition. Cette information pourra être utilisée afin de choisir le libellé à afficher sur la touche Entrée du clavier virtuel.

    @@ -183,7 +174,6 @@ translation_of: Web/HTML/Element/input/text

    Les valeurs autorisées pour cet attribut sont : go, done, next, search et send. Le navigateur décide alors, selon la valeur, quel libellé utiliser pour la touche Entrée.

    -

    Utiliser <input type="text">

    @@ -251,7 +241,7 @@ translation_of: Web/HTML/Element/input/text

    Les éléments <input> de type text ne possède pas de mécanisme de validation automatique. En revanche, il est possible d'ajouter certaines contraintes qui seront vérifiées côté client et que nous allons voir ici.

    -

    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    Un aparté sur la mise en forme

    @@ -295,9 +285,7 @@ input:valid+span:after { </div> </form>
    - +

    Ce qui produira ce résultat :

    @@ -324,9 +312,7 @@ input:valid+span:after { </div> </form>
    - +

    Voici le résultat qui est alors obtenu :

    @@ -338,7 +324,7 @@ input:valid+span:after {

    Note : Si on indique minlength mais pas required, la valeur saisie est considérée comme valide car l'utilisateur peut ne pas saisir de valeur.

    -

    Contraindre un format spécifique - expression rationnelle

    +

    Contraindre un format spécifique - expression rationnelle

    L'attribut {{htmlattrxref("pattern","input")}} permet d'indiquer une expression rationnelle que devra respecter la valeur saisie afin d'être valide (cf. Valider un champ par rapport à une expression rationnelle pour une introduction).

    diff --git a/files/fr/web/html/element/input/time/index.html b/files/fr/web/html/element/input/time/index.html index d7ae5d56d9..ad51788acf 100644 --- a/files/fr/web/html/element/input/time/index.html +++ b/files/fr/web/html/element/input/time/index.html @@ -14,8 +14,6 @@ translation_of: Web/HTML/Element/input/time
    {{EmbedInteractiveExample("pages/tabbed/input-time.html", "tabbed-standard")}}
    - -

    L'interface utilisateur affichée pour le contrôle peut varier d'un navigateur à l'autre. À l'heure où nous écrivons ces lignes, seul Safari ne prend pas en charge ce type de contrôle. Pour ce dernier, l'élément sera transformé en simple <input type="text">.

    Apparence

    @@ -24,23 +22,25 @@ translation_of: Web/HTML/Element/input/time

    Pour Chrome/Opera, le contrôle time possède deux cases permettant de saisir les heures d'une part et les minutes d'autre part (sur 12 ou 24 heures selon la locale de l'ordinateur), deux flèches pour augmenter ou réduire la valeur et une croix permettant de supprimer la valeur.

    -

    Contrôle Chrome pour une saisie avec une locale sur 24hContrôle de Chrome pour une saisie avec une locale sur 12h

    +

    Contrôle Chrome pour une heure sur 12 heures12 heures

    + +

    Contrôle Chrome pour une heure sur 24 heures24 heures

    Firefox

    Pour Firefox, l'aspect du contrôle est similaire mais il ne possède pas les flèches d'incrément. L'horloge peut également s'utiliser sur un format 12 heures ou 24 heures (selon la locale du système). Un bouton rond avec une croix permet de réinitialiser la valeur du contrôle.

    -

    +

    Contrôle Firefox pour une heure sur 12 heures12 heures

    -

    +

    Contrôle Firefox pour une heure sur 24 heures24 heures

    Edge

    Pour Edge, le contrôle affiché est un plus élaboré : il affiche un sélecteur avec deux bandes déroulantes pour choisir l'heure et les minutes (sur 12 ou 24 heures selon la locale) :

    -

    Contrôle Edge pour la saisie sur 24h

    +

    Contrôle Edge pour la saisie sur 12 heures12 heures

    -

    Contrôle Edge pour la saisie sur 12 heures

    +

    Contrôle Edge pour la saisie sur 24 heures24 heures

    Valeur

    @@ -119,7 +119,9 @@ startTime.addEventListener("input", function() { -
    Note : À la différence d'autres types de donnée, les valeurs pour les heures sont sur un domaine périodique. Cela signifie qu'une fois la valeur maximale dépassée, on revient à la valeur minimale (autrement dit, on fait le tour de l'horloge). Ainsi, si on indique min avec la valeur "14:00" et max avec la valeur "2:00", cela signifie que les valeurs autorisées sont comprises entre 2 heures de l'après-midi et jusqu'à 2 heures du matin le jour suivant.
    +
    +

    Note : À la différence d'autres types de donnée, les valeurs pour les heures sont sur un domaine périodique. Cela signifie qu'une fois la valeur maximale dépassée, on revient à la valeur minimale (autrement dit, on fait le tour de l'horloge). Ainsi, si on indique min avec la valeur "14:00" et max avec la valeur "2:00", cela signifie que les valeurs autorisées sont comprises entre 2 heures de l'après-midi et jusqu'à 2 heures du matin le jour suivant.

    +

    {{htmlattrdef("max")}}

    @@ -249,13 +251,8 @@ input:valid+span:after {

    Si vous essayez de soumettre le formulaire sans avoir saisi de valeur (ou avec une heure en dehors des heures d'ouverture indiquées), le navigateur affichera une erreur. Vous pouvez manipuler le résultat obtenu :

    {{EmbedLiveSample('Rendre_la_saisie_obligatoire', 600, 120)}}

    - -

    Voici une capture d'écran (en anglais) si votre navigateur ne prend pas en charge cete fonctionnalité :

    - -

    -
    -

    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    Gérer la prise en charge des navigateurs

    @@ -264,7 +261,7 @@ input:valid+span:after {

    Pour les plateformes mobiles (Android et iOS par exemple), les systèmes d'exploitation fournissent des interfaces particulièrement adaptées aux environnements tactiles. Voici par exemple le sélecteur d'heure pour Chrome sur Android :

    -

    +

    Lorsqu'un navigateur ne prend pas en charge ce type d'élément, il utilise un champ texte (<input type="text">) à la place. Mais cela crée des problèmes, tant au niveau de l'interface utilisateur que de la cohérence des données et du format.

    @@ -301,8 +298,7 @@ input:valid+span:after {

    Il reste donc un problème.

    -

    Actuellement, la meilleure façon de gérer ce type de saisie pour les différents navigateurs consiste à utiliser deux contrôles (le premier pour la saisie des heures et le second pour la saisie des minutes) avec deux éléments {{htmlelement("select")}} (cf. ci-après) ou d'utiliser certaines bibliothèques JavaScript telles que jQuery date picker ou encore jQuery timepicker plugin.

    @@ -364,8 +359,7 @@ input:valid+span:after {

    Les valeurs pour les heures et les minutes seront générées dynamiquement en JavaScript.

    -

    La partie la plus intéressante du code est celle qui permet de détecter si le contrôle natif est pris en charge. Pour cela, on crée un nouvel élément {{htmlelement("input")}} et on modifie son attribut type afin qu'il vaille time, immédiatement après, on vérifie la valeur du type. Si le navigateur ne prend pas en charge l'élément, il renverra text car l'élément a été transformé en <input type="text">, dans ce cas, on masque le sélecteur natif et on affiche l'interface alternative avec les deux éléments {{htmlelement("select")}}.

    diff --git a/files/fr/web/html/element/input/url/index.html b/files/fr/web/html/element/input/url/index.html index 949a8aaf19..56d928e2ab 100644 --- a/files/fr/web/html/element/input/url/index.html +++ b/files/fr/web/html/element/input/url/index.html @@ -10,12 +10,10 @@ translation_of: Web/HTML/Element/input/url ---
    {{HTMLRef}}
    -

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "url" sont employées afin de permettre à un utilisateur de saisir ou d'éditer une URL.

    +

    Les éléments {{HTMLElement("input")}} dont l'attribut type vaut "url" sont employées afin de permettre à un utilisateur de saisir ou d'éditer une URL.

    {{EmbedInteractiveExample("pages/tabbed/input-url.html", "tabbed-shorter")}}
    - -

    La valeur saisie est automatiquement validée par le navigateur qui vérifie qu'elle est vide ou formatée correctement avant que le formulaire puisse être envoyé. Les pseudo-classes {{cssxref(":valid")}} et {{cssxref(":invalid")}} sont appliquées auomatiquement selon le cas de figure.

    @@ -140,7 +138,7 @@ translation_of: Web/HTML/Element/input/url

    Toutefois, ce mécanisme ne vérifie pas que l'URL saisie existe bien ou correspond à l'utilisateur. Seule une vérification de format est effectuée.

    -

    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    Un simple champ

    @@ -192,17 +190,15 @@ translation_of: Web/HTML/Element/input/url

    {{EmbedLiveSample("La_longueur_de_la_valeur", 600, 40)}}

    -

    Note : Ces attributs jouent un rôle lors de la validation. Si la valeur saisie est plus courte que la longueur minimale indiquée ou plus grande que la longueur maximale indiquée, alors elle seera considérée comme invalide. De plus, la plupart des navigateurs ne permettent pas de saisir une valeur plus grande que la longueur maximale indiquée avec maxlength.

    +

    Note : Ces attributs jouent un rôle lors de la validation. Si la valeur saisie est plus courte que la longueur minimale indiquée ou plus grande que la longueur maximale indiquée, alors elle seera considérée comme invalide. De plus, la plupart des navigateurs ne permettent pas de saisir une valeur plus grande que la longueur maximale indiquée avec maxlength.

    Fournir des valeurs par défaut

    On peut fournir une valeur par défaut grâce à l'attribut {{htmlattrxref("value", "input")}} :

    -
    <input id="monURL" name="monURL" type="url"
            value="http://www.example.com">
    -

    {{EmbedLiveSample("Fournir_des_valeurs_par_défaut", 600, 40)}}

    @@ -229,7 +225,7 @@ translation_of: Web/HTML/Element/input/url

    Il existe deux niveaux de validation pour les contrôles de type "url". Tout d'abord, le contrôle natif, toujours présent qui s'asssure que la valeur correspond à une URL bien formée. Ensuite, on peut ajouter des options supplémentaires pour personnaliser le format de l'URL attendue.

    -

    Attention ! Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    +

    Attention : Il est également important de vérifier le format de la valeur saisie côté serveur ! En effet, il est tout à fait possible pour un utilisateur de modifier le code HTML du site ou d'envoyer des données au serveur sans passer par le formulaire. Il est donc nécessaire de contrôler la valeur avant de s'en servir dans la logique de l'application côté serveur afin d'éviter des conséquences malheureuses.

    Validation simple

    @@ -240,18 +236,16 @@ translation_of: Web/HTML/Element/input/url

    Comme vu ci-avant, on peut rendre la saisie de l'URL obligatoire avec l'attribut {{htmlattrxref("required", "input")}} :

    -
    <form>
       <input id="monURL" name="monURL" type="url" required>
       <button>Envoyer</button>
     </form>
    -

    {{EmbedLiveSample("Rendre_le_champ_URL_obligatoire", 600, 40)}}

    Vous pouvez essayer d'envoyer le formulaire précédent sans valeur saisie et voir le résultat obtenu.

    -

    Utiliser un format particulier

    +

    Utiliser un format particulier

    S'il faut restreindre l'URL plus fortement, on peut utiliser l'attribut {{htmlattrxref("pattern", "input")}} afin d'indiquer une expression rationnelle que la valeur saisie doit respecter afin d'être valide.

    @@ -259,8 +253,7 @@ translation_of: Web/HTML/Element/input/url

    Les contrôles de type "url" utilisant la validation native pour vérifier que c'est une URL bien formée et une validation spécifique via l'attribut {{htmlattrxref("pattern", "input")}}, on peut implémenter cette contrainte facilement :

    - + } +
    <form>
       <div>
    @@ -318,7 +311,7 @@ translation_of: Web/HTML/Element/input/url
     

    C'est pourquoi nous avons écrit "L'URL doit être sur le domaine maboite" qui est plus détaillé.

    -

    Note : Si vous rencontrez des problèmes avec ces expressions rationnelles et qu'elles ne semblent pas fonctionner correctement, vérifiez la console de votre navigateur. Il est possible que des messages d'erreur y soient affichés et puissent vous aider à diagnostiquer le problème.

    +

    Note : Si vous rencontrez des problèmes avec ces expressions rationnelles et qu'elles ne semblent pas fonctionner correctement, vérifiez la console de votre navigateur. Il est possible que des messages d'erreur y soient affichés et puissent vous aider à diagnostiquer le problème.

    Exemples

    diff --git a/files/fr/web/html/element/input/week/index.html b/files/fr/web/html/element/input/week/index.html index f9a9fd6805..b010c0cf18 100644 --- a/files/fr/web/html/element/input/week/index.html +++ b/files/fr/web/html/element/input/week/index.html @@ -15,17 +15,15 @@ translation_of: Web/HTML/Element/input/week
    {{EmbedInteractiveExample("pages/tabbed/input-week.html", "tabbed-shorter")}}
    - -

    L'interface utilisateur offerte par un tel contrôle varie en fonction des navigateurs. Au moment où nous écrivons ces lignes, seuls Chrome/Opera et Edge prennent en charge cette fonctionnalité. Pour les navigateurs qui ne l'implémentent pas, l'élément est interprété comme un élément <input type="text">.

    Sous Chrome/Opera, le contrôle week fournit des emplacements pour les deux valeurs. Un calendrier est affiché afin de sélectionner plus faiclement la semaine et l'année. Un bouton avec une croix permet de supprimer la valeur saisie dans le contrôle.

    -

    +

    Pour Edge, le contrôle associé à month est plus élaboré et se compose de deux listes qu'on peut faire défiler séparement pour la semaine d'une part et l'année d'autre part.

    -

    +

    Valeur

    @@ -193,10 +191,10 @@ input:valid+span:after {

    Voici une capture d'écran du résultat obtenu si votre navigateur ne prend pas en charge cette fonctionnalité :

    -

    +

    -

    Important : la validation des données du formulaire HTML par le navigateur ne se substitue pas à la validation des données reçues côté serveur. En effet, il est tout à fait possible pour un utilisateur de modifier le HTML côté client et de passer outre les contraintes normalement appliquées. Il est également possible d'envoyer des données au serveur sans passer par le formulaire. Ne pas vérifier les données reçues côté serveur expose à des risques d'erreur voire d'attaques.

    +

    Attention : la validation des données du formulaire HTML par le navigateur ne se substitue pas à la validation des données reçues côté serveur. En effet, il est tout à fait possible pour un utilisateur de modifier le HTML côté client et de passer outre les contraintes normalement appliquées. Il est également possible d'envoyer des données au serveur sans passer par le formulaire. Ne pas vérifier les données reçues côté serveur expose à des risques d'erreur voire d'attaques.

    Gérer la prise en charge des navigateurs

    @@ -205,7 +203,7 @@ input:valid+span:after {

    Les plateformes mobiles comme Android et iOS fournissent un contrôle natif à l'ergonomie tactile adaptée. Voici par exemple le sélecteur week sur Chrome pour Android :

    -

    +

    Les navigateurs qui ne prennent pas en charge ce type de contrôle l'interprètent comme un champ texte mais cela crée des problèmes de cohérence tant au niveau de l'ergonomie qu'au niveau de la représentation des données.

    @@ -256,8 +254,7 @@ input:valid+span:after {

    On génère les valeurs des semaines dynamiquement.

    -

    Dans le fragment de code JavaScript qui suit, on montre comment détecter si la fonctionnalité est prise en charge ou non. Pour cela, on crée un nouvel élément {{htmlelement("input")}} et on règle son type sur week puis on vérifie immédiatement la valeur de son type. Les navigateurs qui ne prennent pas en charge la fonctionnalité renverront text. Si c'est le cas, on masque le sélecteur natif et on affiche le sélecteur alternatif composé des deux éléments {{htmlelement("select")}}.

    -- cgit v1.2.3-54-g00ecf