2010-05-02 18 views
6

Tengo un formulario y me gustaría que el campo ACCIÓN sea diferente según el botón presionado.Forma diferente ACCIÓN según el botón presionado

Por ejemplo, la forma puede ser que consiga procesada por diferentes archivos PHP si presiono el botón A o el botón B.

¿Cómo puedo hacer esto?

Gracias!

Respuesta

11

En sus botones sólo se puede establecer la acción del formulario, utilizando su form property, por ejemplo en el botón A:

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

Por otra:

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

que te permita esto externamente, de esta manera:

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

O si está utilizando una biblioteca como jQuery:

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

+1 Me gustó especialmente su uso de 'más cercano' en' jQuery'. –

+0

¿Puedo combinar los métodos POST y GET? Por ejemplo, quiero pasar una URL que contenga campos, pero también los elementos del formulario por sus nombres. – posfan12

+1

@ posfan12 - Solo puede enviar un método a la vez, aunque puede serializarlo y publicarlo en una URL con parámetros. No te sigo sobre por qué necesitarías tener ambos, sin embargo, son más los datos que el cliente debe enviar también y, en general, no son una gran idea. –

2

Deje el campo de acción en blanco:

<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 no quieren usar Javascript, pero no utilizar HTML5, puede utilizar el atributo 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> 
Cuestiones relacionadas