J'ai démarré un site Web où je veux avoir 2 boutons d'envoi distincts, dont l'un prendra les données saisies et fera quelques calculs pour les afficher sur le même écran. J'ai réussi à travailler avec:
<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
<input type="submit" name="calc" value="Find Angle">
puis j'utilise:
if (!isset($_POST['submit'])){
Do actions, display calculations}
Maintenant, je veux un deuxième bouton d'envoi qui saisit toujours les données saisies mais qui va ensuite à une adresse différente. Existe-t-il une manière élégante de procéder?
Vous pouvez ajouter une méthode onclick
au nouveau bouton d'envoi qui modifiera l'action du formulaire, puis le soumettra.
<script type="text/javascript">
function submitForm(action) {
var form = document.getElementById('form1');
form.action = action;
form.submit();
}
</script>
...
<form id="form1">
<!-- ... -->
<input type="button" onclick="submitForm('page1.php')" value="submit 1" />
<input type="button" onclick="submitForm('page2.php')" value="submit 2" />
</form>
Vous pouvez modifier l'action du formulaire en utilisant formaction = "page1.php" dans la propriété du bouton.
<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
<input type="submit" name="calc" value="Find Angle">
<input type="button" type="submit" formaction="page1.php">Action 0</button>
<input type="button" type="submit" formaction="page2.php">Action 1</button>
</form>
Remarque: l'attribut formaction de la balise button n'est pas pris en charge dans Internet Explorer 9 et les versions antérieures.
La meilleure façon de gérer plusieurs boutons de soumission consiste à utiliser la casse du commutateur dans le script d'action
<form action="demo_form.php" method="get">
Choose your favorite subject:
<button name="subject" type="submit" value="html">HTML</button>
<button name="subject" type="submit" value="css">CSS</button>
<button name="subject" type="submit" value="javascript">Java Script</button>
<button name="subject" type="submit" value="jquery">jQuery</button>
</form>
Script côté action/serveur:
demo_form.php
<?php
switch($_REQUEST['subject']) {
case 'html': //action for html here
break;
case 'css': //action for css here
break;
case 'javascript': //action for javascript here
break;
case 'jquery': //action for jquery here
break;
}
?>
Réf: W3Schools