![]() |
|
INITIATION AU JAVA SCRIPT |
Généralités
: avec Javascript, les formulaires
HTML
prennent une toute autre dimension.
N'oublions pas qu'en Javascript, on peut accéder à chaque élément d'un formulaire
pour, par exemple, y aller lire ou écrire une valeur, noter un choix auquel on pourra
associer un gestionnaire d'événement... Tous ces éléments renforceront grandement les
capacités interactives de tes pages. Mettons au point le vocabulaire que nous utiliserons. Un
formulaire est l'élément HTML
déclaré par les balises <FORM></FORM>.
Un formulaire contient un ou plusieurs éléments que nous appellerons des contrôles (widgets). Ces contrôles sont notés par
exemple par la balise <INPUT TYPE= ...>.
Déclaration d'un formulaire
: la déclaration d'un formulaire se fait par les balises
<FORM> et </FORM>. Il faut noter qu'en Javascript, l'attribut NAME="nom_du_formulaire" a toute
son importance pour désigner le chemin complet des éléments. En outre, les attributs
ACTION et METHOD sont facultatifs pour autant que
tu ne fais pas appel au serveur. Une erreur classique en Javascript est, emporté par ton
élan, d'oublier de déclarer la fin du formulaire </FORM> après avoir incorporé un
contrôle.
Le contrôle ligne de texte :
la zone de texte est l'élément d'entrée/sortie par
excellence de Javascript. La syntaxe HTML
est <INPUT TYPE="text"
NAME="nom" SIZE=x MAXLENGTH=y> pour un champ de
saisie d'une seule ligne, de longueur x et de longueur maximale de y. L'objet text possède trois propriétés :
| Propriété | Description |
| name | indique le nom du contrôle par lequel tu pourras accéder. |
| defaultvalue | indique la valeur par défaut qui sera affichée dans la zone de texte. |
| value | indique la valeur en cours de la zone de texte. Soit celle tapée par l'utilisateur ou si celui-ci n'a rien tapé, la valeur par défaut. |
Lire une valeur dans une zone de texte
: voici un exemple que nous détaillerons :
Voici une zone de texte. Entre une valeur et appuie sur
le bouton pour contrôler celle-ci.
Le script complet est celui-ci :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">
function controle(form1) {
var test = document.form1.input.value;
alert("Tu as tapé : " + test);
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="form1">
<INPUT TYPE="text" NAME="input"
VALUE=""><BR>
<INPUT TYPE="button" NAME="bouton" VALUE="Contrôler"
onClick="controle(form1)">
</FORM>
</BODY>
</HTML>
Lorsque tu cliques le bouton "contrôler", Javascript appelle la
fonction controle() à laquelle
on passe le formulaire dont le nom est form1 comme argument.
Cette fonction controle() définie
dans les balises <HEAD>
prend sous la variable test, la
valeur de la zone de texte. Pour accéder à cette valeur, on note le chemin complet de
celle-ci (voir le chapitre "Théorie objet"). Soit dans le
document présent, il y a l'objet formulaire appelé form1 qui contient le contrôle de texte nommé
input et qui a comme propriété l'élément de valeur value. Ce qui donne document.form1.input.value.
Écrire une valeur dans une zone de texte
: entre une valeur quelconque dans la zone de texte
d'entrée. Appuie sur le bouton pour afficher cette valeur dans la zone de texte de
sortie.
Voici le code :
<HTML>
<HEAD>
<SCRIPT LANGUAGE="javascript">
function afficher(form2) {
var testin =document. form2.input.value;
document.form2.output.value=testin
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="form2">
<INPUT TYPE="text" NAME="input" VALUE=""> Zone de
texte d'entrée <BR>
<INPUT TYPE="button" NAME="bouton" VALUE="Afficher"
onClick="afficher(form2)"><BR>
<INPUT TYPE="text" NAME="output" VALUE=""> Zone de
texte de sortie
</FORM>
</BODY>
</HTML>
Lorsque tu cliques le bouton "Afficher", Javascript appelle la
fonction afficher() à laquelle
on passe le formulaire dont le nom est cette fois form2 comme argument.
Cette fonction afficher()
définie dans les balises <HEAD> prend sous la variable testin, la valeur de la zone de texte d'entrée. A l'instruction suivante, on
dit à Javascript que la valeur de la zone de texte output comprise dans le formulaire nommé
form2 est celle de la variable testin. A nouveau, on a utilisé le chemin complet pour arriver à la
propriété valeur de l'objet souhaité soit en Javascript document.form2.output.value.
Les boutons radio : les boutons radio sont utilisés pour noter un choix, et
seulement un seul, parmi un ensemble de propositions.
| Propriété | Description |
| name | indique le nom du contrôle. Tous les boutons portent le même nom. |
| index | l'index ou le rang du bouton radio en commençant par 0. |
| checked | indique l'état en cours de l'élément radio |
| defaultchecked | indique l'état du bouton sélectionné par défaut. |
| value | indique la valeur de l'élément radio. |
Exemple :
<HTML>
<HEAD>
<SCRIPT language="javascript">
function choixprop(form3) {
if (form3.choix[0].checked) { alert("Vous avez choisi la proposition " +
form3.choix[0].value) };
if (form3.choix[1].checked) { alert("Vous avez choisi la proposition " +
form3.choix[1].value) };
if (form3.choix[2].checked) { alert("Vous avez choisi la proposition " +
form3.choix[2].value) };
}
</SCRIPT>
</HEAD>
<BODY>
Entrez votre choix :
<FORM NAME="form3">
<INPUT TYPE="radio" NAME="choix" VALUE="1">Choix
numéro 1<BR>
<INPUT TYPE="radio" NAME="choix" VALUE="2">Choix
numéro 2<BR>
<INPUT TYPE="radio" NAME="choix" VALUE="3">Choix
numéro 3<BR>
<INPUT TYPE="button"NAME="but" VALUE="Quel et votre choix
?" onClick="choixprop(form3)">
</FORM>
</BODY>
</HTML>
PS : Ce programme a été écrit avec un souci
didactique. On pourrait l'écrire avec des codes plus compacts. Entre ton choix :
Dans le formulaire nommé
form3, on déclare trois boutons radio.
Note que l'on utilise le même nom pour les trois boutons.
Vient ensuite un bouton qui déclenche la fonction choixprop().
Cette fonction teste quel bouton radio est coché. On accède aux boutons sous forme
d'indice par rapport au nom des boutons radio soit choix[0], choix[1], choix[2]. On teste la propriété
checked du bouton par if(form3.choix[x].checked).
Dans l'affirmative, une boite d'alerte s'affiche. Ce message reprend la valeur attachée
à chaque bouton par le chemin form3.choix[x].value.
Les boutons case à cocher (checkbox)
: les boutons case à cocher sont utilisés pour noter un
ou plusieurs choix (pour rappel avec les boutons radio un seul choix) parmi un ensemble de
propositions. A part cela, sa syntaxe et son usage est tout à fait semblable aux boutons
radio sauf en ce qui concerne l'attribut name.
| Propriété | Description |
| name | indique le nom du contrôle. Toutes les cases à cocher portent un nom différent. |
| checked | indique l'état en cours de l'élément case à cocher. |
| defaultchecked | indique l'état du bouton sélectionné par défaut. |
| value | indique la valeur de l'élément case à cocher. |
Entre ton choix : Il faut sélectionner les numéros 1, 2 et 4 pour avoir la bonne réponse.
<HTML>
<HEAD>
<script language="javascript">
function reponse(form4) {
if ( (form4.check1.checked) == true && (form4.check2.checked) == true &&
(form4.check3.checked) == false && (form4.check4.checked) == true)
{ alert("C'est la bonne réponse! ") }
else
{alert("Désolé, continue à chercher.")}
}
</SCRIPT>
</HEAD>
<BODY>
Entrez votre choix :
<FORM NAME="form4">
<INPUT TYPE="CHECKBOX" NAME="check1" VALUE="1">Choix
numéro 1<BR>
<INPUT TYPE="CHECKBOX" NAME="check2" VALUE="2">Choix
numéro 2<BR>
<INPUT TYPE="CHECKBOX" NAME="check3" VALUE="3">Choix
numéro 3<BR>
<INPUT TYPE="CHECKBOX" NAME="check4" VALUE="4">Choix
numéro 4<BR>
<INPUT TYPE="button"NAME="but" VALUE="Corriger"
onClick="reponse(form4)">
</FORM>
</BODY>
</HTML>
Dans le formulaire nommé
form4, on déclare quatre cases à cocher.
Note que l'on utilise un nom différent pour les quatre boutons. Vient ensuite un bouton
qui déclenche la fonction reponse().
Cette fonction teste quelles cases à cocher sont sélectionnées. Pour avoir la bonne
réponse, il faut que les cases 1, 2 et
4 soient cochées. On accède aux cases en utilisant chaque
fois leur nom. On teste la propriété checked du bouton par (form4.nom_de_la_case.checked).
Dans l'affirmative (&&
pour et logique), une boite d'alerte s'affiche pour la bonne réponse. Dans la négative,
une autre boite d'alerte t'invite à recommencer.
Liste de sélection
: le contrôle liste de sélection te permet de proposer
diverses options sous la forme d'une liste déroulante dans laquelle l'utilisateur peut
cliquer pour faire son choix. Ce choix reste alors affiché. La boite de la liste est
crée par la balise <SELECT> et les éléments de la liste par un ou plusieurs tags
<OPTION>. La balise </SELECT> termine la liste.
| Propriété | Description |
| name | indique le nom de la liste déroulante. |
| length | indique le nombre d'éléments de la liste. S'il est indiqué dans le tag <SELECT>, tous les éléments de la liste seront affichés. Si tu ne l'indique pas, un seul apparaîtra dans la boite de la liste déroulante. |
| selectedIndex | indique le rang à partir de 0 de l'élément de la liste qui a été sélectionné par l'utilisateur. |
| defaultselected | indique l'élément de la liste sélectionné par défaut. C'est lui qui apparaît alors dans la petite boite. |
Un petit exemple comme d'habitude : Entre ton choix :
<HTML>
<HEAD>
<script language="javascript"> function liste(form5) {
alert("L\'élément " + (form5.list.selectedIndex + 1)); }
</SCRIPT>
</HEAD>
<BODY>
Entrez votre choix : <FORM NAME="form5">
<SELECT NAME="list">
<OPTION VALUE="1">Elément 1
<OPTION VALUE="2">Elément 2
<OPTION VALUE="3">Elément 3
</SELECT>
<INPUT TYPE="button"NAME="b" VALUE="Quel est l'élément
retenu?" onClick="liste(form5)"> </FORM>
</BODY>
</HTML>
Dans le formulaire nommé
form5, on déclare une liste de sélection par la balise <SELECT></SELECT>. Entre ces deux
balises, on déclare les différents éléments de la liste par autant de tags <OPTION>. Vient ensuite un
bouton qui déclenche la fonction liste().
Cette fonction teste quelle option a été sélectionnée. Le chemin complet de
l'élément sélectionné est form5.nomdelaliste.selectedIndex. Comme l'index commence à 0, il ne faut pas oublier d'ajouter 1 pour retrouver le juste rang de l'élément.
Le contrôle textarea : l'objet textarea est une zone de texte de plusieurs lignes.
La syntaxe HTML est :
<FORM>
<TEXTAREA NAME="nom" ROWS=x COLS=y>
texte par défaut
</TEXTAREA>
</FORM>
où ROWS=x représente le nombre de lignes et
COLS=y représente le nombre de colonnes.
L'objet textarea possède plusieurs propriétés :
| Propriété | Description |
| name | indique le nom du contrôle par lequel on pourra accéder. |
| defaultvalue | indique la valeur par défaut qui sera affichée dans la zone de texte. |
| value | indique la valeur en cours de la zone de texte. Soit celle tapée par l'utilisateur ou si celui-ci n'a rien tapé, la valeur par défaut. |
A ces propriétés, il faut ajouter
onFocus(), onBlur(), onSelect() et onChange(). En Javascript, on utilisera
\r\n pour passer à la ligne.
Comme par exemple dans l'expression document.Form.Text.value
= 'Check\r\nthis\r\nout'.
Le contrôle Reset : le contrôle Reset permet d'annuler les modifications apportées aux contrôles d'un
formulaire et de restaurer les valeurs par défaut. la syntaxe HTML est :
<INPUT TYPE="reset"
NAME="nom" VALUE="texte">
où VALUE donne le texte du bouton.
Une seule méthode est associée au contrôle
Reset, c'est la méthode onClick().
Ce qui peut servir, par exemple, pour faire afficher une autre valeur que celle par
défaut.
Le contrôle Submit : le contrôle a la tâche spécifique de transmettre
toutes les informations contenues dans le formulaire à l'URL désignée dans l'attribut
ACTION du tag <FORM>. la syntaxe HTML est :
<INPUT TYPE="submit"
NAME="nom" VALUE="texte">
où VALUE donne le texte du bouton.
Une seule méthode est associée au contrôle
Submit, c'est la méthode onClick().
Le contrôle Hidden (caché)
: le contrôle Hidden permet d'entrer dans le script des éléments (généralement des
données) qui n'apparaîtront pas à l'écran. Ces éléments sont donc cachés. D'où son
nom. la syntaxe HTML est :
<INPUT TYPE="hidden"
NAME="nom" VALUE= "les données cachées">
L'envoi d'un formulaire par
Émail : uniquement Netscape !
A force de jouer avec des formulaires, il peut te prendre
l'envie de garder cette source d'information. Mais comment faire? Javascript, et à
fortiori le HTML, ne permet pas d'écrire dans un fichier . Ensuite, le contrôle
Submit est surtout destiné à des CGI ce qui entraîne (encore) un codage
spécial à maîtriser. D'autant que pour nous simples et présumés incompétents
internautes, la plupart des providers ne permettra pas d'héberger une CGI faite par un
amateur pour des raisons (tout à fait compréhensibles) de sécurité. Il ne reste plus
que l'unique solution de l'envoi d'un formulaire via le courrier électronique. La syntaxe est :
<FORM METHOD="post"
ACTION="mailto:ton_adresse_Email">
<INPUT TYPE=text NAME="nom">
<TEXTAREA NAME="adresse" ROWS=2 COLS=35>
</TEXTAREA>
<INPUT TYPE=submit VALUE="Submit">
</FORM>
Tu recevras dans ta boite de réception, un truc bizarre
du genre : nom=Erich+Depuydt+SPEED&adresse=Rue+de+Touraine+5217OD%OA59229+Uxem où on retrouve les champs
nom= et adresse=,
où les champs sont séparés par le signe &, où les espaces sont remplacés par le signe
+ et 17%OD%OA correspond à un passage à la ligne.
Attention ! Ceci ne marche que sous Netscape et pas sous
Microsoft Explorer 4.0 ...
Avec Explorer, le mailto ouvre
le programme de Mail mais n'envoie rien du tout.