Où placer ceci

Eléphanteau du PHP | 22 Messages

29 août 2007, 21:48

Bonjour à tous,
Voilà j'ai récupéré un script sur Internet, cependant je ne sais pas où dois-je le placer.

Le voici :

Code : Tout sélectionner

<script> function AjoutTxt(LeTxt) { document.nomdufomulaire.nomduchampdetexte.value=document.nomdufomulaire.nomduchampdetexte.value + LeTxt; } </script>

Sachant que j'ai déjà ça dans ma page :

Code : Tout sélectionner

function valider() { if (test_formulaire()) { document.forms[0].submit(); } }
Comment fait-t-on pour cumuler 2 fonctions ?

Merci !



[edit]
J'ai trouvé comment cumuler les 2 fonctions :
onSubmit="return AjoutTxt(LeTxt);return test_formulaire()"
Cependant mon AjoutTxt(LeTxt) ne fonctionne pas. Voici mon code :

Code : Tout sélectionner

function AjoutTxt(LeTxt) { document.forms.Text.value=document.forms.Text.value + publicite; }

Merci.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

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:

Code : Tout sélectionner

AjoutTxt ('publicité');

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:

Code : Tout sélectionner

onSubmit="return AjoutTxt(LeTxt);return test_formulaire()"
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>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 22 Messages

07 sept. 2007, 21:12

Merci beaucoup ;-)

Désolé j'avais pas accès au net pour répondre avant, donc je vais tester ça... et encore merci !

Et pour le type d'usage, c'est une plateforme d'envoi de SMS en utilisant NOWSMS.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 sept. 2007, 11:09

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute