2010-05-02 7 views
6

J'ai un formulaire et j'aimerais que le champ ACTION soit différent en fonction du bouton pressé.Forme différente ACTION en fonction du bouton pressé

Par exemple, le formulaire peut obtenir traité par différents fichiers PHP si j'appuyez sur le bouton A ou le bouton B.

Comment puis-je faire cela?

Merci!

Répondre

11

Dans vos boutons, vous pouvez simplement définir l'action de la forme, en utilisant son form property, par exemple sur le bouton A:

this.form.action = "fileA.php"; 

autre:

this.form.action = "fileB.php"; 

Vous pouvez rig ce jusqu'à l'extérieur, comme ceci:

document.getElementById("buttonA").onclick = function() { 
    document.getElementById("myForm").action = "fileA.php"; 
}; 

Ou si vous utilisez une bibliothèque comme jQuery:

$(function() { 
    $("#buttonA").click(function() { 
    $(this).closest("form").attr('action', 'fileA.php'); 
    }); 
}); 
+0

+1 J'ai particulièrement aimé votre utilisation de 'nearest' dans' jQuery'. –

+0

Puis-je combiner les méthodes POST et GET? Par exemple, je veux passer une URL contenant des champs mais aussi les éléments de formulaire par leurs noms. – posfan12

+1

@ posfan12 - Vous ne pouvez soumettre qu'une seule méthode à la fois, bien que vous puissiez sérialiser et publier dans une URL avec des paramètres. Je ne vous suis pas sur pourquoi vous auriez jamais besoin d'avoir les deux, c'est plus de données pour le client à envoyer aussi et généralement pas une bonne idée. –

2

Laissez le champ d'action vide:

<form action ="" method="post" name="form1"> 
<input type ="submit" onclick="calA();"/> 
<input type = "submit" onclick="calB"/> 
</form> 

<script> 
function calA() 
{ 
document.form1.action ="a.php"; 
} 
function calB() 
{ 
document.form1.action = "b.php"; 
} 
</script> 
1

Si vous ne voulez pas utiliser Javascript, mais ne l'utilisez HTML5, vous pouvez utiliser l'attribut formaction:

<!DOCTYPE html> 
<html> 
    <body> 
    <form> 
     <input type="submit" formaction="http://firsttarget.com" value="Submit to first" /> 
     <input type="submit" formaction="http://secondtarget.com" value="Submit to second" /> 
    </form> 
    </body> 
</html> 
Questions connexes