par
sadeq » 04 sept. 2007, 15:55
D'abord on peut simplifier l'écriture de ladite fonction comme ça:
Code : Tout sélectionner
function AjoutTxt(LeTxt) {
document.forms[0].Text.value += LeTxt;
}
En suite, il faut comprendre comment ça marche une fonction. Elle s'appelle AjoutTxt et reçoit un paramètre (variable) nommée LeTxt.
Le paramètre LeTxt doit recevoir une valeur (de type texte ici) lors de l'appel
Pour appeler une fonction il faut l'invoquer avec son nom en lui passant les valeurs des paramètres requis.
Dans ton cas si tu veux passer la valeur 'publicité' à la fonction AjoutTxt pour l'ajouter au texte existant dans le champ Text de ton formulaire, il faut écrire l'appel suivant:
Remarque que lors de cet appel la valeur du paramètre LeTxt est passée entre parenthèse et entre apostrophes.
Les apostrophes sont des délimiteurs de texte.
Par ailleurs, l'écriture:
n'est pas correcte car si tu as 2 return succéssives seul le premier sera exécuté. Quand on appelle une fonction par un return dans un événement, le return arrête immédiatement l'événement après appel de la fonction. Donc le second return ne sera pas exécuté.
Dans un événement le return joue le rôle de contrôleur de l'événement: si la fonction appelée par le return retourne vrai, l'événement est réalisé par le système sinon il est abondonné.
C'est alors, dans notre cas de onSubmit, si le return reçoit vrai de la fonction appelée le submit du formulaire sera fait sinon rien n'est fait.
C'est pourquoi, tu dois corriger donc en ne laissant qu'un return et inclure la fonction AjoutTxt dans la fonction test_formulaire ou valider() selon le type d'usage que tu compte en faire (et que tu n'as pas exliqué d'ailleurs).
Exemple, d'adaptation de ce genre de fonctions dans un système de gestion des erreurs de validation d'un formulaire:
<script>
function test_formulaire() {
//Règles de validité des champs
if (document.forms[0].nom.value != "" && document.forms[0].prenom.value != "") return true; //ici tout est valide
//Détection des erreurs
InitMessage();
if (document.forms[0].nom.value == "") {
//ici, la fonction AjoutTxt affiche un message d'erreur
AjoutMessage('Le nom est vide,<br />');
}
if (document.forms[0].prenom.value == "") {
//ici, la fonction AjoutTxt affiche un message d'erreur
AjoutMessage('\nLe prénom est vide,<br />');
}
//par défaut rien n'est valide
AjoutMessage ('<p><b>Veuillez complèter votre saisie!</b></p>');
return false;
}
function InitMessage(){
document.getElementById('message').innerHTML = "";
}
function AjoutMessage(texte) {
document.getElementById('message').innerHTML += texte;
}
</script>
<form name="form1" onSubmit="return test_formulaire();">
<p>Nom* <input name="nom" /></p>
<p>Prénom* <input name="prenom" /></p>
<p><input name="action" value="Valider" type="submit" /></p>
</form>
<div id="message" style="color:red"></div>