2012-01-29 21 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> 

Ora, se faccio clic su Invia di div div ONE o due che ho sempre $ _POST [ 'aaa'] = 'due';form con due pulsante di invio con valore diverso

È possibile creare un modulo con due inviare con valori diversi?

se clicco su div uno presentare vorrei reveice $ _POST [ 'aaa'] = 'uno' e se clicco su div due presentare vorrei ricevere $ _POST [ 'aaa'] = ' due '.

Come posso farcela?

Posso usare per questo PHP e jQuery.

EDIT: Non voglio creare due formano - Non voglio che mostra due volte <input type="text" name="text">

EDIT: forse posso invece pulsante di invio? ma come?

+0

basta creare due forme. – c69

risposta

11

Sembra che ciò che si vuole realmente fare è avere un valore in ciascuno dei pulsanti, vedere this, ad esempio:

<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

In genere si consiglia di includere la risposta qui, anziché solo un collegamento, nel caso in cui il collegamento non funzioni più (come per me in questo momento). –

4

Avreste bisogno di due forme diverse:

<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> 

pratica standard è che quando due campi hanno la stessa identica name, di utilizzare solo l'ultimo valore riscontrato nel modulo e inviare quello.

PHP ha una speciale-caso la notazione (name="aaa[]") per consentire la presentazione valori multipli con lo stesso nome, ma che non avrebbe aiutato qui, come che sarebbe presentare tutti i valori aaa, non solo quella più vicina al pulsante di invio.


form 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> 

lato server:

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

questo è OK, ma non voglio mostrare due volte sulla mia pagina

+0

Puoi sempre usare qualche javascript per copiare il valore di quel campo di input in un altro campo nascosto in entrambi i moduli quando è presentato. Ma dato che la tua forma è strutturata in questo momento, non c'è modo di aggirarla.Esistono altri trucchi che puoi utilizzare, ad esempio assegnare a ogni nome univoco di campo e utilizzarlo per individuare il pulsante di invio che è stato selezionato, quindi accedere solo al valore appropriato. –

+0

grazie, ma non so come posso farlo –

3

Invece di mostrare due pulsante di invio, è possibile mostrare un elenco radio con due opzioni e un pulsante di invio.

3

Prova questo:

in HTML-

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

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

in jOuery-

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

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

quindi puoi vedere nei risultati del modulo - cosa contiene "Button".

Problemi correlati