Tutoriels Trucsweb
          

 

Niveau : INTERMÉDIAIRE (Consulté 65,471 fois)
Compatibilité : Netscape 4+ IE 4+

  Ajouter aux favoris  Envoyer à un ami  Version imprimable

Manipulation de formulaires en Javascript

Partie 1 : Introduction, l'objet Form

   par Django (Oznog) Blais, Trucsweb (13 Septembre 2001)


imageDans cette série de tutoriels, nous verrons comment manipuler l'objet "form" pour accéder aux formulaires d'une page Web. Comment utiliser les méthodes et capturer les événements pour lire et modifier les propriétés des éléments. Nous verrons en détail chaque champ de saisie avec des exemples en contexte de formulaires dynamiques, de validations spécifiques et le code complet de la dernière version de la fonction universelle twValide 2.0.

 

L'architecture
L'objet "form" est un des principaux objets d'un document qui contient tous les formulaires d'une page Web. La structure est composée de plusieurs tableaux ou "array" qui vont des formulaires aux options en passant par les éléments. Noter que l'index commence à 0. Les éléments d'un formulaire sont les champs de saisie comme un champ texte ou encore les boutons de sélection et boîte à cocher communément appelés "radio button" et "checkbox". Les options, dernier tableau au bout de cette structure, sont une propriété spécifique de l'élément "liste de sélection". Pour bien représenter cette structure, j'ai fait l'organigramme suivant qui montre trois formulaires dans un même document. En suivant le deuxième formulaire (index 1), on voit trois éléments dont le deuxième (index 1) est une "liste de sélection" avec trois options.

Structure de l'objet From

Voici donc comment accéder à chaque niveau de cette structure:

document.form[1].élément[1].option[1].propriété

 

Accès par la propriété "name"
Bien que vous ayez un accès direct via l'index de chaque formulaire ou éléments vous pouvez aussi, et c'est généralement le cas, utiliser l'attribut "name". Pour utiliser cette technique, vous devez spécifier la propriété "name" lors de la déclaration du formulaire et des éléments, <form name="monForm"...> pour un formulaire ou <input name="monElement"...>. Une fois votre formulaire bien identifié, vous n'avez pas à localiser sa position dans le tableau mais simplement à donner son nom.

document.monForm.monElement.propriété

 

Passer un formulaire et ses éléments à une fonction
Quand un formulaire ou un élément du formulaire contient une capture d'événement qui appelle une fonction, un paramètre réservé permet de passer l'objet qui fait la capture ou l'atribut "event handler". De cette manière, vos codes seront plus clairs et surtout portables. Ce mot réservé est this.

Voici plusieurs exemples.

onSubmit="fonction(this)">

Envoie le formulaire au complet, éléments, propriétés, valeurs... à la fonction. Noter qu'il n'est pas nécessaire de spécifier "form" ici car l'objet qui l'utilise est lui même le formulaire.

<input type="button" value="test" onClick="fonction(this.form)">

Envoie aussi le formulaire au complet à la fonction mais cette foi il faut préciser "form" pour indiquer au javascript d'envoyer non seulement le bouton mais le formulaire au complet.

<input name="prenom" type="text" onChange="fonction(this)">

Envoie seulement l'élément "prenom" à la fonction.

Cette dernière équivaut à faire:

<input name="prenom" type="text" onChange="fonction(document.monForm.prenom)">

De telle sorte que vous pouvez envoyer une propriété spécifique de l'élément

<input name="prenom" type="text" onChange="fonction(this.value)">

Récupéré dans une fonction, le paramètre représente en tout point un formulaire, un élément ou une propriété. C'est-à-dire que la variable qui récupère le paramètre se transformera en tableau s'il s'agit d'un formulaire, en chaîne de caractère s'il s'agit d'une valeur etc.

Exemple: Passer le formulaire par le formulaire

<script type="text/javascript" language="javascript">
<!--
function affiche_prenom(nForm) {
  alert(nForm.prenom.value);
}
-->
</script>
<form name="monForm" onSubmit="affiche_prenom(this)">
<input name="prenom" type="text">
<input type="button" name="affiche" value="Afficher">
</form>

Exemple: Passer le formulaire par un élément

<script type="text/javascript" language="javascript">
<!--
function affiche_prenom(nForm) {
  alert(nForm.prenom.value);
}
-->
</script>
<form name="monForm">
<input name="prenom" type="text">
<input type="button" name="affiche" value="Afficher" onClick="affiche_prenom(this.form)">
</form>

Exemple: Passer un élément par un élément

<script type="text/javascript" language="javascript">
<!--
function affiche_prenom(nElement) {
  alert(nElement.value);
}
-->
</script>
<form name="monForm">
<input name="prenom" type="text" onChange="affiche_prenom(this)">
</form>

Exemple: Passer la propriété d'un élément par un élément

<script type="text/javascript" language="javascript">
<!--
function affiche_prenom(nValeur) {
  alert(nValeur);
}
-->
</script>
<form name="monForm">
<input name="prenom" type="text" onChange="affiche_prenom(this.value)">
</form>

 

Le tableau ou "array" "form" et des éléments.
Puisque les formulaires et les éléments sont dans des tableaux, il est possible d'afficher tous les éléments formulaire d'un document sans même les connaître. Il suffit de savoir que la propriété "length" de l'objet from retourne le nombre de formulaires dans le document et que la propriété "length" de l'objet éléments du formulaire retourne le nombre d'éléments d'un formulaire. Avec cette valeur, vous pouvez faire une simple boucle qui affiche la propriété name de chaque formulaire et de chaque élément.

<script type="text/javascript" language="javascript">
<!--
Affiche_forms()

function Affiche_forms() {
  // Fonction qui affiche le nom de tous les formulaires
  // et de tous les les éléments d'un document HTML
  // Boucle tous les formulaire
  for (var i = 0; i < document.forms.length; i++) {

    // Affiche le nom ou la propriété name du formulaire i
    document.write(document.forms[i].name+"<br />");

    // Boucle tous les éléments du formulaire i
    for (var l = 0; l < document.forms[i].elements.length; l++) {

      // Affiche le nom ou la propriété name de l'élément l
      document.write("- "+document.forms[i].elements[l].name+"<br />");
    }
  }
}
// -->
</script>

Noter que l'objet "forms" prend un "s" ainsi que l'objet "elements".

 Début de la page


TrucswebTrucsweb


Fil d'info Trucsweb


 
sp

 
sp
 S U I T E   D U   S U J E T 
sp
Fonction de validation twValide version 2.2 : Validation de formulaire côté client

Hébergement de qualité!

partenaire
Rechercher un tutoriel!
 
recherche avancée
Abonnez-vous!

 

Save the Net

 
sp
 C O M M A N D I T E S 
sp






 
sp
 T U T O R I E L S 
sp
· ASP / VBscript
· C/C++
· CSS
· DHTML
· CGI / Perl
· HTML
· Java/JSP
· Javascript
· PHP
· SSI
· WAP/WML
· XML/XSL
· Infographie
· Flash et Shockwave
· Audiovisuel
· Images gratuites
· Hébergement
· Analyses de logiciels
· Internet et Protocoles
· Veille intégrée
· Référencement
· Sécurité
· Outils gratuits
 
sp
 F O R U M S 
sp
· Forum Javascript
· Forum HTML/CSS
· Forum ASP/VBScript
· Forum Flash
· Tous les forums
 
sp
 S E R V I C E S 
sp
Generateur Trucsweb
· Générateur
· Répertoire
· Logithèque
· Glossaire
· Forum
· Nouveautés Dev Zone
· Ajouter un site
· Ajouter un logiciel
· Ajouter un tutoriel
· Fil d'info sur votre site
· Tester votre site
 
sp
 A P P L I C A T I O N S 
sp
· twCompteur 1.0 Nouveau
· twCalende 1.0 Nouveau
· twLiMenu 1.0 Nouveau
· twValide 2.2 sp
· twAliste 1.0 sp
· twASPDate 2.0 sp
· twASPLivre 1.0 sp
 
sp
 R É F É R E N C E S 
sp
· W3C HTML 4.0
· W3C XHTML 1.0
· Web Design Group
· W3C SMIL 2.0
· W3C XML 1.0
· XML Cover Pages
· W3C CSS LEVEL 2
· Netscape Javascript 1.5
· Netscape Javascript 1.4
· Netscape Javascript 1.3
· Netscape DHTML
· Gecko DOM ref.
· IE DHTML
· VBScript Language Ref.
· JScript Language Ref.
· ASP Object Quick Ref.
· ADO API Reference
· Microsoft IIS5
· MSDN Library
· RFC Editor Site
· HTML 4.0 code de caractères
· Unicode fonts
· Manuel PHP
· Documentation Perl
· Perl 5 Reference Guide
· Flash actionscript FAST
· ActionScript dictionary
· MySQL Manual
· SQL Pro (F. Brouard)
· Java Language Spec.
· Java 2 SDK Doc. V1.3.1
· JavaServer Pages Ref.
· C/C++ Language Ref.
· Python Library Reference
· Les Navigateurs
· Terminologie d'Internet
· Traduction
· Traduction systran
· Traduction d'interface client
· Extensions de fichiers
· Virus Wildlist
· Virus Alerts
 
sp
 D O M A I N E S 
sp
iWeb

iWeb
 
sp
 C O P Y R I G H T  
sp

 

accueil | tutoriels | logithèque | répertoire | forum



© 1997-2006
Django (Oznog) Blais
Rivière-du-Loup, Québec
Ajouter à votre Sidebar  RSS 1.0
 
Conception Oznog co. Multimédia


Hit-Parade    Tout navigateurs   

12 visiteurs