11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un formulaire avec plusieurs input de type submit :

<form id="demande-form">

....

<input type="submit" id="foo-input" />
<input type="submit" id="foo2-input" />
<input type="submit" id="cancel-input" />
<input type="submit" id="foo3-input" />
...

<div id="cancel-demande-dialog" title="Confirmation">
  Etes-vous sur de vouloir annuler cette demande ? 
  Toute information enregistrée sera supprimée.
</div>

</form>


Pour l'un d'entre eux, j'utilise jQuery UI pour afficher une fenêtre de confirmation :

$('#cancel-demande-dialog').dialog({
    autoOpen: false,
    modal: true,
    buttons: {
	   "Confirmer": function() { $('#demande-form').submit(); },
           "Annuler": function() { $(this).dialog("close");}
    }
  });

  $("#cancel-input").click(function(){
    $("#cancel-demande-dialog").dialog("open");
    return false;
  });



Mon souci est à la ligne "Confirmer": function() { $('#demande-form').submit(); }
Le formulaire est bien soumis, mais comme si j'avais appuyé sur le premier bouton submit de ma page (foo-submit).

Comment déclencher spécifiquement un submit() du bouton "cancel-submit" ?
Salut.

Soit tu supprimes le type="submit de ton input#cancel-input. (puisque de toute façon c'est en javascript que tu vas ensuite soumettre le formulaire)

Sinon peut être que tu peux annuler l'action du bouton en faisant :
buttons: {
    "Confirmer": function() { $('#demande-form').submit(); },
    "Annuler": function() { $(this).dialog("close");return false;}
}


Bon courage.
J'ai compris l'origine du problème et j'ai donc pu le résoudre :

Lors de mon traitement PHP, pour savoir quel bouton a été utilisé, je teste
$_POST['foo-input'] puis $_POST['foo-input2'] puis $_POST['cancel-input']... Hors, quand on déclenche le formulaire par un submit(), toutes ces valeurs sont vides (et je n'effectuais donc aucun traitement).

J'ai donc rajouté :


"Confirmer": function() {
  jQuery('#demande-form').append('<input type="hidden" name="cancel-input" value="true" />');
  jQuery('#demande-form').submit(); 
},


afin que $_POST['cancel-input'] ne soit pas vide.


Merci quand même de ton aide Smiley smile