2012-01-29 28 views
6
<form action="here.php" method="POST"> 
<input type="text" name="text"> 

<div id="one"> 
    <input type="hidden" name="aaa" value="one"> 
    <input type="submit" value="Send"> 
</div> 

<div id="two"> 
    <input type="hidden" name="aaa" value="two"> 
    <input type="submit" value="Send"> 
</div> 

</form> 

Ahora bien, si hago clic en el botón Enviar del div UNO o DOS div tengo siempre en $ _POST [ 'AAA'] = 'dos';formulario con dos botón de enviar con diferente valor

¿Es posible hacer una forma con dos enviar con diferentes valores?

Si hago clic en div se sometan me gustaría reveice $ _POST [ 'AAA'] = 'uno' y si hago clic en div dos Presentar me gustaría recibir $ _POST [ 'AAA'] = ' dos '.

¿Cómo puedo hacerlo?

Puedo utilizar para este PHP y jQuery.

EDIT: no quiero crear dos forman - No quiero que muestra dos muchas veces <input type="text" name="text">

EDIT: Tal vez yo puedo lugar botón de enviar? ¿pero cómo?

+0

solo haga dos formas. – c69

Respuesta

11

Parece que lo que realmente quiere hacer es tener un valor en cada uno de los botones, ver this, por ejemplo:

<form action="demo_form.asp" method="get"> 
    Choose your favorite subject: 
    <button name="subject" type="submit" value="fav_HTML">HTML</button> 
    <button name="subject" type="submit" value="fav_CSS">CSS</button> 
</form> 
+4

Por lo general, se recomienda que la respuesta se incluya aquí, en lugar de solo un enlace, en caso de que el enlace ya no funcione (como para mí en este momento). –

4

Se necesitaría dos formas diferentes:

<div id="one"> 
    <form ...> 
     <input type="hidden" name="aaa" value="one"> 
     <input type="submit" value="Send"> 
    </form> 
</div> 

<div id="two"> 
    <form ...> 
     <input ...> 
     <input ...> 
    </form> 
</div> 

La práctica habitual es que cuando dos campos tienen exactamente el mismo name, utilizar sólo el valor LAST encontrado en la forma, y ​​lo presentarán.

PHP tiene una notación de mayúsculas y minúsculas especiales (name="aaa[]") para permitir el envío de múltiples valores con el mismo nombre, pero eso no ayudaría aquí, ya que enviaría TODOS los valores aaa, no solo el más cercano al botón de enviar.


formulario HTML:

<form ...> 
<input type="text" name="textfield"> 

<div id="one"> 
    <input type="hidden" name="one_data" value="aaa" /> 
    <input type="submit" name="submit_one" value="Submit" /> 
</div> 

<div id="two"> 
    <input type="hidden" name="two_data" value="bbb" /> 
    <input type="submit" name="submit_two" value="Submit" /> 
</div> 
</form> 

del lado del servidor:

if (isset($_POST['submit_two'])) { 
    $data = $_POST['two_data']; 
} else if (isset($_POST['submit_one'])) { 
    $data = $_POST['one_data']; 
} else { 
    die("Invalid submission"); 
} 
+0

esto está bien, pero no quiero mostrar dos veces en mi página

+0

Puedes usar siempre javascript para copiar el valor de ese campo de entrada en otro campo oculto en ambos formularios cuando está enviado. Pero como su forma está estructurada en este momento, no hay forma de evitar esto.Hay OTROS trucos que puede usar, como dar a cada campo nombres únicos, y usar ese hecho para detectar en qué botón de envío se hizo clic, y luego acceder solo al valor apropiado. –

+0

gracias, pero no sé cómo puedo hacerlo –

3

En lugar de mostrar dos botón de envío, puede mostrar una lista de radio con dos opciones y un botón de envío.

3

Prueba esto:

en html-

<input id="PreviousButton" value="Previous" type="submit" /> 
    <input id="NextButton" value="Next" type="submit" /> 

    <input id="Button" name="btnSubmit" type="hidden" /> 

en jOuery-

 $("#PreviousButton").click(function() { 
      $("#Button").val("Previous"); 
     }); 

     $("#NextButton").click(function() { 
      $("#Button").val("Next"); 
     }); 

luego puede ver en los resultados del formulario lo que contiene el "Botón".

Cuestiones relacionadas