Trucs et astuces javascript, tutoriel, focus, champ, select, formulaire dynamique, bouton
   Vous êtes ici : Tutoriels  
 

Tutoriels

Javascript / Trucs et astuces...

Quelques trucs & astuces
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 :
1 - Donner le focus à un élément
2 - Changer le libellé d'un bouton
3 - Ne permettre qu'un seul clic sur un bouton
4 - Valider un formulaire par JavaScript
5 - Vider un champ à la prise de focus
6 - Détecter la touche [Entrée] sur un formulaire
7 - Ajouter, insérer et supprimer des lignes dans une liste SELECT
8 - Bascule entre deux listes SELECT
9 - Empêcher la saisie dans un champ
10 - Faire clignoter un bouton

1 - 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()"


2 - 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>


3 - 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 :
Dans l'entête de la page
<SCRIPT language="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>


Dans le corps
<FORM name="form3">
   <INPUT type="button" name="bouton" value="Cliquez-moi aussi !" onClick="CompteClic(this.form)">
</FORM>


4 - 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
Dans l'entête de la page

<SCRIPT language="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>

Dans le corps de la page
<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>


5 - 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>


6 - 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()">

<script language="javascript">
function VerifierEntree(formulaire) {
alert("Le submit sur le formulaire a été détecté")
// empeche la soumission du formulaire
// On peut imaginer derriere ce traitement un test de saisie sur le mot
// return false; en cas d'erreur.
// return true; pour envoyer le formulaire au serveur.
}
</script>
7 - 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.

Le script :
<SCRIPT language="javascript">
function Ajouter(form) {
var o=new Option(form.libelle.value,form.valeur.value);
form.liste.options[form.liste.options.length]=o;
}
function Inserer(form) {
var o=new Option(form.libelle.value,form.valeur.value);
if(form.liste.options.selectedIndex>=0) {
form.liste.options.length++;
for (var i=form.liste.options.length-1;i>form.liste.options.selectedIndex;i--) {
var p=new Option(form.liste.options[i-1].text,form.liste.options[i-1].value);
form.liste.options[i]=p;
}
form.liste.options[form.liste.options.selectedIndex]=o;
} else {
alert("Insertion impossible. Sélectionnez une ligne");
}
}
function Supprimer(list) {
if (list.options.selectedIndex>=0) {
list.options[list.options.selectedIndex]=null;
} else {
alert("Suppression impossible : aucune ligne sélectionnée");
}
}

function SupprimerTout(list) {
list.options.length=0;
}
</SCRIPT>



8 - 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

Le script:
<SCRIPT language="javascript">
function Deplacer(l1,l2) {
if (l1.options.selectedIndex>=0) {
o=new Option(l1.options[l1.options.selectedIndex]
.text,l1.options[l1.options.selectedIndex].value);
l2.options[l2.options.length]=o;
l1.options[l1.options.selectedIndex]=null; }else{
alert("Aucune activité sélectionnée");
}
}
</SCRIPT>
<INPUT type="button" value="Ajouter >>>" onClick="Deplacer(this.form.liste1,this.form.liste2)">
<INPUT type="button" value=">>> Enlever" onClick="Deplacer(this.form.liste2,this.form.liste1)" >
9 - Empêcher la saisie dans un champ
Dès que la curseur souris arrive sur ce champ, il est enlevé. Cela rend impossible la saisie ou la modification de son contenu.

L'astuce est d'utiliser l'événement onFocus qui détecte l'arrivée du curseur dans le champ.
Voici la ligne décrivant la zone :
<INPUT type="text" value="Non modifiable" name="champ" onFocus="this.blur()">
La méthode focus() appliquée au champ retire le curseur.

Avec cette ligne, il est possible de rediriger le curseur vers un autre champ du formulaire :
<INPUT type="text" value="Non modifiable" name="champ" onFocus="this.form.champ2.focus()">
La méthode focus() appliquée à champ2 active le curseur.

10 - Faire clignoter un bouton
Pour attirer l'attention, il est possible de faire clignoter le texte d'un bouton.
Ce script permet de paramétrer le texte à afficher et le délai de clignotement. Remarquez que le temps d'affichage du bouton vide est plus court.
Le script:
<SCRIPT language="javascript">
function GoClignoter() {
var delai1=500; // temps d'affichage du texte exprimé en millisecondes (ici 0.5 seconde)
var delai2=200; // temps d'affichage du bouton vide
var texte="TEXTE CLIGNOTANT"; // Texte à afficher
var bouton=document.form10.clignoter; // ici on récupère le bouton concerné
if (bouton.value=="") {
bouton.value=texte;
delai=delai1;
} else {
bouton.value="";
delai=delai2;
}
setTimeout("GoClignoter()",delai);
}
</SCRIPT>
<INPUT type="button" name="clignoter" style="width:150px" value="Texte du bouton" onClick="alert('Bouton inactif dans cet exemple')">
<INPUT type="button" value="Cliquez pour démarrer le clignotement" onClick="GoClignoter()">

Retour au Tutoriel


Merci au site ToutJavaScript.com, pour le contenu de cette rubrique...

 

 
 
 

© 2002-2005 DeluxeAvenue   |  contact@deluxeavenue.com
Agence de LORIENT :  Tél. 06 64 20 06 69