Page 1 sur 1

1 formulaire à 2 boutons

Posté : 21 sept. 2007, 23:05
par Sebe
Salut,

J'essaye depuis un certain temps de faire un formulaire disposant de 2 boutons : un pour effacer le test et l'autre pour utiliser le test dans la création d'un plan d'entraînement !

Je ne suis pas fortiche en JS et, pourtant, cela à l'air de fonctionner mais la page attendu ne s'affiche pas ... je penche plus pour un formulaire foireux !

Mes fonctions JS:

Code : Tout sélectionner

function deltest(){ var Itemid = document.forms.testview.Itemid.value; var test_id = document.forms.testview.test_id.value; var del = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=delete&id=' + test_id; //alert ("Id du test " + test_id); alert ("del = " + del); document.forms.testview.testviewac.value = String( del ); document.forms.testview.submit(); } function plantest(){ var Itemid = document.forms.testview.Itemid.value; //alert ("Itemid " + Itemid); var test_id = document.forms.testview.test_id.value; var plan = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=plan&id=' + test_id; alert ("plan = " + plan); document.forms.testview.testviewac.value= String ( plan ); document.forms.testview.submit(); }
Le code HTML
<tr>
	<td height="50" colspan="2">
	  <div align="center">
	    <form id="testview" name="testviewac" method="post" action="">
	      <input type="hidden" name="Itemid" value="<?php echo $Itemid;?>"/>
	      <input type="hidden" name="test_id" value="<?php echo $test->test_id;?>" />
	      <input type="submit" name="delete" onClick="deltest(this.test_id);" value="<?php echo _DELETE;?>" />
	      <input type="submit" name="plan"  onClick="plantest(this.test_id);" value="<?php echo _BOUTONPLAN;?>" />
		    </form>
      </div></td>
Je ne sais pas expliquer mon erreur, est-ce que quelqu'un peut m'aider ?

Merci

Posté : 22 sept. 2007, 01:54
par Ryle
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".



Remplace déjà tes boutons submit qui ont pour effet de soumettre le formulaire par des input de type "button" qui ne feront qu'exécuter le onclick :)

Posté : 22 sept. 2007, 08:27
par Sebe
Remplace déjà tes boutons submit qui ont pour effet de soumettre le formulaire par des input de type "button" qui ne feront qu'exécuter le onclick :)
Ok j'ai fait mais cela ne fonctionne pas.

J'ai pas trop le temps maintenant car je vais bosser mais ce soir j'orienterai de nouvelles recherches avec 'button' mais, si quelqu'un a une proposition, elle sera la bien-venue ... un grand merci

Posté : 22 sept. 2007, 14:11
par Ryle
Dans tes fonctions tu essaye de mettre à jour la valeur du champ "testviewac" :

Code : Tout sélectionner

document.forms.testview.testviewac.value = ...
or il n'existe aucun champ de ce nom dans ton formulaire... dont le nom par ailleurs est testviewac et pas testview.

Essaye comme ceci pour récupérer la variable $_POST['testviewac'] et renseigner sa valeur et soumettre le formulaire correctement :

Code : Tout sélectionner

<form id="testview" name="testview" method="post" action=""> <input type="hidden" name="testviewac" /> ... document.testview.testviewac.value = ... ; document.testview.submit();

Posté : 23 sept. 2007, 07:57
par Sebe
Salut et merci pour le coup de main,

J'ai essayé de faire ce que tu m'as demandé mais voilà rien ne se passe et c'est la même page qui est rechargé et pas la variable del ... je suis certain qu'elle passe grâce à l'alert mais après ?

Merci

Posté : 23 sept. 2007, 09:47
par Ryle
Lorsque tu ne spécifies pas d'action dans ton formulaire, celui-ci est soumis à la page actuelle (donc la même page est rechargée). Cependant tu dois à ce moment là récupérer les valeurs de ton formulaire et donc avoir $_POST['testviewac'] de renseigné.

Tu peux donc soit conserver cette méthode et faire la redirection en php (avec un header()) au début de ton script, soit faire la redirection en javascript. Dans cas le plus simple est de rediriger directement l'utilisateur vers l'url demandée sans se soucier d'envoyer le formulaire :
//au lieu de 
document.testview.testviewac.value = url; 
document.testview.submit();

// tu fais simplement
document.location = url;

Posté : 23 sept. 2007, 22:13
par Sebe
Ok un grand merci pour ce coup de main ... je mets le code finit au cas où quelqu'un désire faire la même chose !

Code PHP/HTML
<form id="testview" name="testview" method="post" action="">
     <input type="hidden" name="Itemid" value="<?php echo $Itemid;?>"/>
      <input type="hidden" name="test_id" value="<?php echo $test->test_id;?>" />
      <input type="hidden" name="testviewac" size="50" />
      <input type="button" name="delete" onClick="if(confirm('<?php echo _DELTEST;?>')) deltest(this.test_id);" value="<?php echo _DELETE;?>" />
      <input type="button" name="plan"  onClick="plantest(this.test_id);" value="<?php echo _BOUTONPLAN;?>" />
</form>
Code JS

Code : Tout sélectionner

function deltest(){ var Itemid = document.forms.testview.Itemid.value; var test_id = document.forms.testview.test_id.value; var del = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=delete&id=' + test_id; //alert ("del = " + del); document.location = del; } function plantest(){ var Itemid = document.forms.testview.Itemid.value; //alert ("Itemid " + Itemid); var test_id = document.forms.testview.test_id.value; var plan = 'index.php?option=com_cattest' + '&Itemid=' + Itemid + '&task=plan&id=' + test_id; //alert ("plan = " + plan); document.location = plan; }
Merci et A+