Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| dev:javascript:core:fondamentaux [2024/10/12 12:57] – yoann | dev:javascript:core:fondamentaux [2024/10/13 11:24] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 151: | Ligne 151: | ||
| ==== Réagir aux évènements ==== | ==== Réagir aux évènements ==== | ||
| - | La programmation évènementielle consiste à définir du code qui sera exécuté lorsque certains évènements se produisent. La méthode consiste à : | + | La programmation évènementielle consiste à définir du code qui sera exécuté lorsque certains évènements se produisent. Un évènement est un signal envoyé par l’élément HTML lorsque l’utilisateur effectue une action (clic, frappe au clavier, etc). La méthode consiste à : |
| * Indiquer au moteur Javascript les évènements que l'on souhaite écouter grâce à un **eventListener**; | * Indiquer au moteur Javascript les évènements que l'on souhaite écouter grâce à un **eventListener**; | ||
| Ligne 179: | Ligne 179: | ||
| Lorsqu' | Lorsqu' | ||
| - | * L' élément sur lequel l' | + | * L' élément sur lequel l' |
| - | * Les coordonnées de la souris; | + | * Les coordonnées de la souris |
| - | * La touche du clavier frappée par l' | + | * La touche du clavier frappée par l' |
| * Etc | * Etc | ||
| Ligne 191: | Ligne 191: | ||
| }); | }); | ||
| </ | </ | ||
| - | | + | |
| + | ==== Traitement des formulaires ==== | ||
| + | |||
| + | Les formulaires permettent de regrouper des champs que l' | ||
| + | |||
| + | Dans le document HTML : | ||
| + | <code html> | ||
| + | < | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | La plupart des champs de formulaire possèdent un attribut **value** qui contient la saisie de l' | ||
| + | |||
| + | <code javascript> | ||
| + | //Obtenir la valeur saisie par l' | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | Dans le cas des cases à cocher, il faudra vérifier si la propriété **checked** est vraie ; | ||
| + | <code javascript> | ||
| + | // L' | ||
| + | document.getElementById(" | ||
| + | </ | ||
| + | |||
| + | Les boutons radio partagent l' | ||
| + | |||
| + | <code html> | ||
| + | < | ||
| + | < | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | <input type=" | ||
| + | <label for=" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Pour les traiter, on récupère l' | ||
| + | |||
| + | <code javascript> | ||
| + | // Récupère tous les balises input de type bouton radio ayant l' | ||
| + | let boutons = document.querySelectorAll(' | ||
| + | |||
| + | let couleur = ""; | ||
| + | |||
| + | for (let i = 0; i < boutons.length; | ||
| + | if (boutons[i].checked) { | ||
| + | couleur = boutons[i].value; | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Affiche la valeur du bouton radio coché | ||
| + | console.log(couleur); | ||
| + | </ | ||
| + | |||
| + | Par défaut, lorsque l' | ||
| + | |||
| + | Si nos traitements ont lieu côté client, ce comportement par défaut n'est pas approprié : dans ce cas, on peut le désactiver. | ||
| + | |||
| + | Pour désactiver ce comportement par défaut, il faut : | ||
| + | |||
| + | * Écouter cet événement " | ||
| + | * Empêcher ce comportement grâce à la méthode '' | ||
| + | |||
| + | <code javascript> | ||
| + | const form = document.getElementById(" | ||
| + | |||
| + | form.addEventListener(" | ||
| + | // On désactive le rechargement de la page | ||
| + | event.preventDefault(); | ||
| + | console.log(" | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | En général, on vérifie la saisie de l' | ||
| + | |||
| + | * L’ événement " | ||
| + | * L’ événement " | ||
| + | * L’ événement " | ||
| + | |||
| + | |||
| + | ===== Gestion des erreurs ===== | ||
| + | |||
| + | Javascript utilise la gestion des exceptions via les instructions **try** / **catch** et **throw**. Ce système permet notamment de reporter/ | ||
| + | |||
| + | <code javascript> | ||
| + | |||
| + | function verifyFormField(a_field) { | ||
| + | if (a_field.value === "" | ||
| + | throw new Error(`Le champ ${a_field.id} est vide`) | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | La fonction définie ci-dessus pourra être appelée n fois dans le code pour chaque champ du formulaire mais selon les besoins, la gestion des erreurs pourra être différente : | ||
| + | |||
| + | <code javascript> | ||
| + | let form = document.querySelector(" | ||
| + | |||
| + | form.addEventListener(" | ||
| + | try { | ||
| + | event.preventDefault(); | ||
| + | |||
| + | let name_field = document.getElementById(" | ||
| + | verifyFormField(name_field); | ||
| + | |||
| + | let mail_field = document.getElementById(" | ||
| + | verifyFormField(mail_field); | ||
| + | |||
| + | // traitements du formulaire | ||
| + | // ... | ||
| + | } catch (error) { | ||
| + | //gestion des erreurs centralisée et adaptée à l' | ||
| + | console.log(" | ||
| + | } | ||
| + | }) | ||
| + | </ | ||
| + | |||
| + | |||
| ===== Tests ===== | ===== Tests ===== | ||
| + | |||
| Frameworks de tests : | Frameworks de tests : | ||