Identifier les champs

Pour pouvoir contrôler les valeurs inscrites dans les champs, il faut pouvoir avoir accés aux champs du formulaire ! Pour celà on utilise les objets mis à notre disposition

Identifier le formulaire

Il existe trois moyens d'identifier un formulaire (balise form) dans une page pour y avoir accès en javascript : par son l'ordre d'apparition dans la page ou par son identificateur. La troisième méthode est assez spécifique mais utile.

Par ordre d'apparition dans la page

Exemple simple de document XHTML :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    </head>
    <body>
    <form action="suivante.php" method="post">
        <!-- Tous les champs de form ici -->
    </form>
    </body>
</html>

En javascript, l'objet formulaire est :

var formulaire = document.forms[0];

On utilise pour celà l'objet document qui correspond à l'intégralité de notre page, via la propriété forms qui est un tableau d'objets. Nous n'avons qu'un seul formulaire dans la page, donc il est accessible au rang 0

Par identifiant

Cette méthode peut-être utilisée pour accéder à n'importe quel objet de la page, pour peu qu'lui donne un identifiant.

On remplace ainsi la balise form précédente par :

<form id="monformulaire" action="suivante.php" method="post">

On a alors accès à l'objet avec :

var formulaire = document.getElementById('monformulaire');

Attention : la fonction getElementById() n'est pas connue des vieux navigateurs. Il conviendra de la redéfinir si elle n'existe pas. Pour celà, dans le head :

function myGetElement(id){
    if ( document.getElementById && document.getElementById( id ) ) {
        return document.getElementById( id );
    }else if ( document.all && document.all[ id ] ) {
        return document.all[ id ];
    }else if ( document.layers && document.layers[ id ] ) {
        return document.layers[ id ];
    }else {
        return null;
    }
}

On utilisera ensuite :

var formulaire = myGetElement('monformulaire');

This

Cette méthode peut-être utilisée pour accéder à n'importe quel objet de la page, si on appelle une fonction lors d'un évènement lié à l'objet.

Eh oui, on peut aussi avoir accés à un objet aussi directement que ça :

<form action="suivante.php" method="post" onsubmit="mafonction(this)">

"this" désigne le formulaire en question !

Les champs des formulaires

La méthode pour avoir la valeur rentrée dans un formulaire est différente pour les boutons radio et les menus déroulants select

Cas général

Une fois qu'on a accès au formulaire, on a aussi accès à ses champs ! On se sert pour celà des noms de variables associés aux champs.

Exemple :

<input type="text" name="prenom" />

On peu accéder à l'objet avec :

var champprenom = formulaire.prenom;

Le cas des boutons radio

Le problème avec les boutons radio, c'est qu'ils ont le même nom ! Comment on fait pour savoir lequel a été coché ?

Exemple :

<label><input type="radio" name="exemple" value="1" />Option 1</label>
<label><input type="radio" name="exemple" value="2" />Option 2</label>
<label><input type="radio" name="exemple" value="3" />Option 3</label>
<label><input type="radio" name="exemple" value="4" />Option 4</label>

Et bien, le premier bouton radio sera accessible par :

var bouton1 = formulaire.exemple[0];

Javascript : orienté objet

Trouver les propriétés et les méthodes

Chaque formulaire à ses propres ropriétés et méthodes, même si certaines se retrouvent. Pour avoir la liste : javascriptkit.com

Redirection javascript

La fenêtre elle même est un objet javascript : window a des propriétés et des méthodes.

Parmi les propriétés les plus utiles, on trouve window.location qui permet de faire une redirection en javascript. Lorsqu'on utilise cette méthode, ne pas oublier :

Il faut donc penser à mettre un petit texte après le script de redirection, avec un lien, pour permettre à tous ces utilisateurs d'accéder à la bonne page.

Pour en savoir plus sur les propriétés et méthodes de l'objet window, consultez le site de javascriptkit

Exercice

Créez une simple page qui redirige vers votre index.html