Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
HTMLFormElement
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'interfaceHTMLFormElement représente un élément HTML<form> du DOM. Elle permet d'accéder — et, dans certains cas, de modifier — certains aspects du formulaire, ainsi que d'accéder à ses éléments composants.
Dans cet article
Propriétés d'instance
Cette interface hérite aussi des propriétés de son parentHTMLElement.
HTMLFormElement.acceptCharsetUne chaîne de caractères reflétant la valeur de l'attribut HTML
accept-charsetde ce formulaire.HTMLFormElement.actionUne chaîne de caractères reflétant la valeur de l'attribut HTML
actionde ce formulaire, contenant l'URI d'un programme qui traite les informations soumises par le formulaire.HTMLFormElement.autocompleteUne chaîne de caractères reflétant la valeur de l'attribut HTML
autocompletede ce formulaire, indiquant si les contrôles de ce formulaire peuvent voir leurs valeurs renseignées automatiquement par le navigateur.HTMLFormElement.encodingouHTMLFormElement.enctypeUne chaîne de caractères reflétant la valeur de l'attribut HTML
enctypede ce formulaire, indiquant le type de contenu utilisé pour transmettre le formulaire au serveur. Seules des valeurs définies peuvent être utilisées. Les deux propriétés sont synonymes.HTMLFormElement.elementsLecture seuleUn objet
HTMLFormControlsCollectionregroupant tous les contrôles de formulaire appartenant à cet élément de formulaire.HTMLFormElement.lengthLecture seuleUn nombre
longreflétant le nombre de contrôles dans le formulaire.HTMLFormElement.nameUne chaîne de caractères reflétant la valeur de l'attribut HTML
namedu formulaire, contenant le nom du formulaire.HTMLFormElement.noValidateUne valeur booléenne reflétant la valeur de l'attribut HTML
novalidatede ce formulaire, indiquant si le formulaire ne doit pas être validé.HTMLFormElement.methodUne chaîne de caractères reflétant la valeur de l'attribut HTML
methoddu formulaire, indiquant la méthode HTTP utilisée pour soumettre le formulaire. Seules des valeurs définies peuvent être utilisées.HTMLFormElement.relUne chaîne de caractères reflétant la valeur de l'attribut HTML
reldu formulaire, indiquant les types de liens que le formulaire crée, sous forme d'une liste de valeurs séparées par des espaces.HTMLFormElement.relListLecture seuleUn objet
DOMTokenListreflétant l'attribut HTMLrelsous la forme d'une liste de jetons.HTMLFormElement.targetUne chaîne de caractères reflétant la valeur de l'attribut HTML
targetdu formulaire, indiquant où afficher les résultats reçus lors de l'envoi du formulaire.
Les champs nommés sont ajoutés à leur instance de formulaire propriétaire en tant que propriétés et peuvent écraser les propriétés natives si elles portent le même nom (par exemple, un formulaire avec une entrée nomméeaction verra sa propriétéaction retourner cette entrée plutôt que la valeur de l'attribut HTMLaction).
Méthodes d'instance
Cette interface hérite aussi des méthodes de son parentHTMLElement.
checkValidity()Retourne
truesi les contrôles enfants de l'élément sont soumis à lavalidation des contraintes et respectent ces contraintes ; retournefalsesi certains contrôles ne les respectent pas. Pour chaque contrôle invalide, un évènement annulableinvalidest déclenché ; ces contrôles sont considérés invalides si l'évènement n'est pas annulé. C'est au développeur·euse de décider de la conduite à tenir lorsque la méthode retournefalse.reportValidity()Retourne
truesi les contrôles enfants de l'élément respectent leurs contraintes de validation. Lorsquefalseest retourné, des évènements annulablesinvalidsont déclenchés pour chaque contrôle invalide et les problèmes de validation sont signalés à l'utilisateur·ice.requestSubmit()Demande que le formulaire soit soumis en utilisant le bouton d'envoi indiqué et sa configuration associée.
reset()Redéfinit le formulaire à son état initial.
submit()Soumet le formulaire au serveur.
Évènements
Écoutez ces évènements en utilisantaddEventListener(), ou en assignant un écouteur d'événement à la propriétéoneventname de cette interface.
Notes d'utilisation
>Obtention d'un objet élément de formulaire
Pour obtenir un objetHTMLFormElement, vous pouvez utiliser unsélecteur CSS avecquerySelector() ou vous pouvez obtenir une liste de tous les formulaires du document utilisant sa propriétéforms.
Document.forms retourne un tableau des objetsHTMLFormElement listant chacun des formulaires de la page. Vous pouvez utiliser alors l'une des syntaxes suivantes pour obtenir un formulaire individuel :
document.forms[index]retourne le formulaire à l'
indexdéfini dans le tableau du formulaire.document.forms[id]retourne le formulaire dont l'ID (identifiant) est
id.document.forms[name]retourne le formulaire dont la valeur d'attribut de
nameestname.
Accès aux éléments du formulaire
Vous pouvez accéder à la liste des éléments contenant des données du formulaire en examinant la propriétéelements du formulaire. Celle-ci retourne unHTMLFormControlsCollection listant tous les éléments d'entrée de données utilisateur·ice du formulaire, aussi bien ceux qui sont des descendants du<form> que ceux qui sont déclarés membres du formulaire via leur attributform.
Vous pouvez aussi obtenir un élément du formulaire en utilisant son attributname comme clé duform, mais utiliserelements est une meilleure approche — il contientseulement les éléments du formulaire et ne peut pas être confondu avec d'autres attributs duform.
Problèmes liés au nommage des éléments
Certains noms peuvent interférer avec l'accès en JavaScript aux propriétés et aux éléments du formulaire.
Par exemple :
<input name="id">prendra le pas sur<form>. Cela signifie queform.idne fera pas référence à l'identifiant du formulaire, mais à l'élément dont le nom est"id". Cela vaut pour toute autre propriété de formulaire, comme<input name="action">ou<input name="post">.<input name="elements">rendra la collectionelementsdu formulaire inaccessible. La référenceform.elementsrenverra désormais à l'élément individuel.
Pour éviter de tels problèmes liés aux noms d'éléments :
- Utilisez toujours la collection
elementspour éviter toute ambiguïté entre le nom d'un élément et une propriété du formulaire. - Ne jamais utiliser
"elements"comme nom d'élément.
Si vous n'utilisez pas JavaScript, cela ne posera pas de problème.
Éléments considérés comme des contrôles de formulaire
Les éléments qui sont inclus parHTMLFormElement.elements etHTMLFormElement.length sont :
<button>(bouton)<fieldset>(_champ_s)<input>(entrée) (à l'exception de ceux donttypeest"image"omis pour des raisons historiques)<object>(objet)<output>(sortie)<select>(sélection)<textarea>(zone de texte)
Aucun autre élément n'est inclus dans la liste retournée parelements, ce qui en fait un excellent moyen d'accéder aux éléments les plus importants lors du traitement des formulaires.
Exemples
Crée un nouvel élément de formulaire, modifie ses attributs et l'envoie :
const f = document.createElement("form"); // Crée un formulairedocument.body.appendChild(f); // L'ajoute au corps du documentf.action = "/cgi-bin/some.cgi"; // Ajoute les attributs action et methodf.method = "POST";f.submit(); // Appelle la méthode submit() du formulaireExtraire des informations d'un élément<form> et définir certains de ses attributs :
<form name="formA" action="/cgi-bin/test" method="post"> <p> Appuyez sur « Info » pour les détails du formulaire, ou sur « Définir » pour les modifier. </p> <p> <button type="button">Info</button> <button type="button">Définir</button> <button type="reset">Réinitialiser</button> </p> <textarea rows="15" cols="20"></textarea></form>document.getElementById("info").addEventListener("click", () => { // Récupère une référence au formulaire via son nom const f = document.forms["formA"]; // Les propriétés du formulaire qui nous intéressent const properties = [ "elements", "length", "name", "charset", "action", "acceptCharset", "action", "enctype", "method", "target", ]; // Parcourt les propriétés et les transforme en une chaîne de caractères pour affichage const info = properties .map((property) => `${property}: ${f[property]}`) .join("\n"); // Remplit le <textarea> du formulaire avec les propriétés document.forms["formA"].elements["form-info"].value = info; // document.forms["formA"]['form-info'].value fonctionnerait aussi});document.getElementById("set-info").addEventListener("click", (e) => { // Récupère une référence au formulaire via la cible de l'événement // e.target est le bouton, et .form est le formulaire auquel il appartient const f = e.target.form; // L'argument doit être une référence à un élément de formulaire. f.action = "a-different-url.cgi"; f.name = "a-different-name";});Envoi d'un formulaire dans une nouvelle fenêtre :
<form action="test.php"> <p> <label>Prénom : <input type="text" name="first-name" /></label> </p> <p> <label>Nom : <input type="text" name="last-name" /></label> </p> <p> <label><input type="password" name="pwd" /></label> </p> <fieldset> <legend>Animal préféré</legend> <p> <label><input type="radio" name="pet" value="cat" /> Chat</label> </p> <p> <label><input type="radio" name="pet" value="dog" /> Chien</label> </p> </fieldset> <fieldset> <legend>Véhicules possédés</legend> <p> <label ><input type="checkbox" name="vehicle" value="Bike" />J'ai un vélo</label > </p> <p> <label ><input type="checkbox" name="vehicle" value="Car" />J'ai une voiture</label > </p> </fieldset> <p><button>Envoyer</button></p></form>Spécifications
| Specification |
|---|
| HTML> # htmlformelement> |
Compatibilité des navigateurs
Voir aussi
- L'élément HTML qui implémente cette interface
<form>.