Manipuler les formulaires en JavaScript
La dernière partie du DOM est consacrée aux formulaires. Ils fonctionnent sur le même principe que le reste du DOM mais ont certaines spécificités qui permettent d'interagir avec les champs et leurs valeurs.
Sélectionner un formulaire
Un formulaire HTML est sélectionné exactement comme tous les autres éléments du DOM :
avec
document.querySelector()avec
document.getElementById()avec
document.getElementsByTagName()avec
document.getElementsByClassName()...
Écouter l'événement de soumission d'un formulaire
Lorsqu'un formulaire est soumis, quelle que soit la méthode de soumission (<input type="submit">, <button type="submit" ou touche Entrée) l'événement qui est déclenché est submit.
Le comportement par défaut du navigateur lorsqu'un formulaire est soumis est de recharger la page. Pour empêcher ça et pouvoir faire vos traitements, vous devez utiliser : event.preventDefault().
Récupérer les champs d'un formulaire
Pour récupérer les champs d'un formulaire, vous allez devoir utiliser leur attribut name. Lorsque l'objet représentant le formulaire est construit pour vous en JavaScript, tous les champs présents dans le formulaire sont placé dans la collection elements contenue dans l'objet.
Pour accéder à l'un de ces éléments il faut donc utiliser form.elements.nameOfTheElement.
Récupérer la valeur d'un élément
Une fois que vous avez isolé un élément contenu dans le formulaire, vous pouvez accéder à la valeur du champ en utilisant value:
Soumettre le formulaire vous-même après traitement
Parce que vous avez utilisé event.PreventDefault() le formulaire n'a pas été soumis et la page n'a pas été rechargée. Une fois que vous avez effectué votre traitement si vous en avez besoin vous pouvez forcer la soumission du formulaire avec submit().
Écouter les champs de formulaires individuellement
Si vous voulez surveiller un champ précis du formulaire, vous pouvez utiliser addEventListener() sur l'élément du formulaire.
L'événement change vous permet de surveiller toutes les modifications faites dans un input, un select ou un textarea.