passage varaible dans fonction JS

Petit nouveau ! | 7 Messages

03 oct. 2006, 08:51

bonjour à tous,
je desire afficher une fenetre par la fonction confirme avec en retour connaitre le choix de l'utilisateur

Code : Tout sélectionner

function tester_confirm() { if (confirm("Si vous confirmez, la boîte de réponse affiche 'confirmé', sinon 'refusé'")) var reponse = "confirmé"; else var reponse = "refusé"; }
en retour la fonction donne true ou false mais comment on récupere la valeur????? dans le code html
comment recuperer la variable reponse pour l'afficher dans le champ texte?

Code : Tout sélectionner

<p><form name="test_confirm" submit="return false"> <input type="text" name="form_confirm" value="" size="20" /><br /> <input type="button" value="tester confirm" onclick="tester_confirm(this.form)" /> </form></p>
Autre question dans la fenetre qui va apparaitre par la fonction confirme comment afficher une variable php

Code : Tout sélectionner

if (confirm("Si vous confirmez, la boîte de réponse affiche $reponse"))
Merci pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 oct. 2006, 10:10

Pour qu'une fonction te renvoi un résultat il te faut utiliser l'instruction return et récupérer la valeur retournée :)

Code : Tout sélectionner

<script> function toto() { if(...) // si le test est vrai renvoi 42 return 42; else // sinon renvoi 0 return 0; } var res = toto(); // appel de la fonction et récupération du résultat dans la variable res alert(res); // affichera 42 ou 0 selon le résultat du if() </script>
Si ta fonction te renvoi vrai ou faux, tu peux l'utiliser directement :
if(toto()) { ... } else { ... }

Enfin, pour mettre une variable php, il n'y a rien de plus simple. PHP sert à générer ta page et donc potentiellement ton code javascript. Il te suffit donc de générer le code que tu souhaites utiliser :
<script>
alert ("ma variable php contient <?php echo $variable; ?>");
</script>
(attention aux éventuels problèmes de guillemets ou d'apostrophe dans la chaine $variable.. :))

Petit nouveau ! | 7 Messages

03 oct. 2006, 13:07

Merci pour ta réponse mais je suis un peu bouché
voila mon code

Code : Tout sélectionner

function tester_confirm() { if (confirm("Si vous confirmez, la boîte de réponse affiche 'confirmé', sinon 'refusé'")) var reponse = "confirmé"; else var reponse = "refusé"; } </script> <p>Cliquez sur "tester confirm", votre réponse sera affichée dans la boîte texte&nbsp;:</p> <p><form name="test_confirm" submit="return false"> <input type="text" name="form_confirm" value=tester_confirm size="20" /><br /> <input type="button" value="tester confirm" onclick="tester_confirm(this.form)" /> </form></p>
La fenetre s'affiche bien mais je n'arrive pas a récuperer la reponse pour la mettre dans le champ texte

Si je met comme tu indiques dans le test if ()
return 42 alors la fenetre ne s'ouvre même pas


MERCI

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 oct. 2006, 16:13

En fait tu as deux solutions. Soit c'est ta fonction qui met à jour le champ, soit elle se contente de renvoyer le résultat et tu traite ce résultat ensuite.

Dans le premier cas (maj du champ en direct) :

Code : Tout sélectionner

function tester_confirm() { if (confirm("Si vous confirmez, la boîte de réponse affiche 'confirmé', sinon 'refusé'")) var reponse = "confirmé"; else var reponse = "refusé"; document.nom_formulaire.nom_champ.value = reponse; // met à jour le champ nom_champ dans le formulaire nom_formulaire }
Dans le second, la fonction s'exécute et retourne le résultat :

Code : Tout sélectionner

function tester_confirm() { if (confirm("Si vous confirmez, la boîte de réponse affiche 'confirmé', sinon 'refusé'")) var reponse = "confirmé"; else var reponse = "refusé"; return reponse; // renvoi le résultat qui doit être traité ensuite }
Ton input devient alors :

Code : Tout sélectionner

<input type="button" value="tester confirm" onclick="document.nom_formulaire.nom_champ.value = tester_confirm();" /> (tu appelles la fonction ici et tu récupères le résultat pour le mettre dans ton champ nom_champ)
Il n'est pas utile de passer "this.form" en argument de ta fonction, mais si tu le fais, il faut spécifier dans la fonction qu'elle attend des arguments :

Code : Tout sélectionner

function tester_confirm(le_formulaire) { // spécifie le nom du paramètre if (confirm("Si vous confirmez, la boîte de réponse affiche 'confirmé', sinon 'refusé'")) var reponse = "confirmé"; else var reponse = "refusé"; le_formulaire.nom_champ.value = reponse; // utilise le paramètre (et donc la valeur passée) }
C'est y plus clair ? :)

Petit nouveau ! | 7 Messages

03 oct. 2006, 16:18

Merci beaucoup de ton aide

RV