Retourner � la page d'accueil de TJSRetourner � la page d'accueil de TJS

Les formulaires en Javascript - Astuces de formulaire

Cette page montre de nombreuses astuces pour rendre un formulaire dynamique et attractif, en réaction aux événements générés par l'utilisateur.

Il est nécessaire de bien connaître le principe des formulaires HTML pour tirer partie de ces astuces.

Au sommaire :
Donner le focus à un élément
Changer le libellé d'un bouton
Ne permettre qu'un seul clic sur un bouton
Valider un formulaire par JavaScript
Vider un champ à la prise de focus
Détecter la touche [Entrée] sur un formulaire
Ajouter, insérer et supprimer des lignes dans une liste select
Bascule entre deux listes select
Alimenter un champ texte au passage de la souris

Donner le focus (curseur) à un élément de formulaire

Le premier champ texte a le focus au chargement de la page.
Cliquez sur les boutons pour donner le focus aux autres éléments. La prise de focus est possible pour tous les types d'objets.



Le script
<form name="form1">
   <input type="texte" name="champ1">
   <input type="button" value="<- Donne le focus" onclick="this.form.champ1.focus()">
   <select name="champ2" >
      <option>Ceci est la ligne n° 1</option>
      <option>Ceci est la ligne n° 2</option>
   </select>
   <input type="button" value="<- Donne le focus" onclick="this.form.champ2.focus()">    <textarea rows="2" cols="15" name="champ3"></textarea>    <input type="button" value="<- Donne le focus" onclick="this.form.champ3.focus()"> </form>

Pour donner le focus à un champ de formulaire à l'ouverture de la page, il faut ajouter cette ligne dans la balise body :
onload="document.forms['nomduform'].elements['nomchamp'].focus()"

Changer le libellé d'un bouton

Cliquez le bouton pour changer son libellé.
Le script
<form name="form2">
   <input type="button" name="bouton" value='Cliquez-moi !' onclick="this.value='Touché !'">
</form>

Ne permettre qu'un seul clic sur un bouton

Accepte le premier clic sur le bouton et empêche les suivants.
Utile pour éviter de recevoir 3 fois le même message quand un visiteur s'excite sur le bouton "Envoyer" !
Le script
<script type="text/javascript">
   var nbclic=0  // Initialisation à 0 du nombre de clic
   function CompteClic(formulaire) { // Fonction appelée par le bouton
      nbclic++; // nbclic+1
      if (nbclic>1) { // Plus de 1 clic
         alert("Vous avez déjà cliqué ce bouton.\nLe formulaire est en cours de traitement... Patience");
      } else {        // 1 seul clic
         alert("Premier Clic.");
      }
   }
</script>

<form name="form3">
  <input type="button" name="bouton" value="Cliquez-moi aussi !" onclick="CompteClic(this.form)">
</form>

Valider un formulaire par JavaScript

Il est souvent utile de vérifier la saisie d'un formulaire avant de le valider.
L'idéal est de créer un bouton (de type "button" et pas "submit") qui appelle une fonction javascript qui contrôle la saisie et soumet ou non le formulaire.
Voyons un exemple simple de test de saisie d'un email.
Saisissez une adresse mail valide (du type nom@domaine.com)
Le script
<script type="text/javascript">
   function ValiderMail(formulaire) {
      if (formulaire.mail.value.indexOf("@",0)<0) {alert("Adresse mail saisie invalide.\nLe formulaire ne sera pas validé.")}
      else {
         alert("formulaire validé.\nPour valider un formulaire : formulaire.submit()");
         // Pour valider le formulaire en javascript :
         // formulaire.submit()
      }
   }
</script>
<form name="form4" action="">
   Saisissez une adresse mail valide (du type nom@domaine.com)
   ;<input type="texte" name="mail">
   <input type="button" name="bouton" value="Valider" onclick="ValiderMail(this.form)">
</form>

Vider un champ à la prise de focus

Par exemple, un champ de saisie de login avec à l'origine "Votre login".
Si vous cliquez sur le champ, "Votre login" disparaît.
Le script
<form name="form5">
   <input type="texte" name="login" value='Votre login' onFocus="if (this.value=='Votre login') {this.value=''}">
</form>

Détecter la touche [Entrée] sur un formulaire

Utile dans les formulaires de recherche, où la plupart des utilisateurs tapent [Entrée] pour valider la recherche, sans cliquer sur le bouton "Rechercher".
Entrez un mot :

L'appui sur [Entrée] déclenche la soumission du formulaire qu'il est possible de détecter avec l'événement onsubmit.
La balise form peut donc s'écrire :

<form name="formulaire" onSubmit="maFonction()">

Ajouter, insérer et supprimer des lignes dans une liste

Ce script permet d'ajouter dynamiquement des éléments dans une liste, sans rechargement de la page (nécessite des versions 4 et + de Netscape ou Internet Explorer).
Entrez le libellé et la valeur dans les champs ci-dessous, cliquez sur Ajouter ou Insérer.
Libellé : - Valeur :

Sélectionnez une ligne de la liste pour voir le détail



Le bouton Ajouter ajoute à la fin de la liste la ligne.
Le bouton Insérer insère la nouvelle ligne avant la ligne sélectionnée.
Le bouton Supprimer la sélection supprime la ligne sélectionnée dans la liste.
Le bouton Supprimer tout supprime toutes les lignes.

Télécharger le script

Bascule entre deux listes

Ce script est une extension du n°7 (nécessite des versions 4 et + de Netscape ou Internet Explorer).
Imaginons que vous deviez choisir des activités parmi une liste proposée (J'ai écrit cette page au mois d'août !) :

Activités proposées


Activités retenues
Télécharger le script

Alimenter un champ texte au passage de la souris

Pour alimenter un champ texte au passage de la souris sur un objet (ici une cellule d'un tableau), jbvillier, propose cette solution :
<script type="text/javascript"> 
function focusOn() { 
  document.forms["form11"].champtexte.value = "Hé hop" ; 
} 
</script>
<form name="form11">
<div onMouseOver="focusOn()">Passez la souris ici</div>
<input type="text" name="champtexte"> 
</form>

Ce qui donne

Passez la souris ici

Voir des exemples de contrôles de saisies dans un formulaire

Tutoriel écrit par webmaster mis à jour le

Troisième édition Tout JavaScript chez Dunod

Tout JavaScript le livre chez DunodEn savoir plus
Sortie le 4 janvier 2023

Version papier 29€90
Format électronique 22€99.

Commandez en ligne

Chercher une fonction, un objet, ...

Le 03/05/2024 07:47:18 sur php 7 en 57.4 ms