2012-05-21 7 views
26

Ho un sito web ha iniziato dove voglio avere 2 presentare pulsanti separati, uno dei quali prenderanno dati inseriti e fare qualche calcolo ad essa per visualizzare sullo stesso schermo. Ho questo lavoro con successo con:Tasti multipli presentare php diverse azioni

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php"> 
<input type="submit" name="calc" value="Find Angle"> 

e poi io uso:

if (!isset($_POST['submit'])){ 
Do actions, display calculations} 

Ora voglio un pulsante che prende ancora i dati sono entrati, ma poi va a un indirizzo diverso secondo invio. C'è un modo elegante per farlo?

risposta

45

si potrebbe aggiungere un metodo onclick per il nuovo pulsante che cambierà l'azione del modulo e quindi inviarlo presentare.

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

It wo RKS! Molte grazie! Ho passato un'ora a guardare casi leggermente diversi dai miei e non riuscivo a capirlo. Ce l'hai in 3 secondi :-) Ho molto altro da imparare .. – Joegramming

+0

Cosa succede se l'utente preme il tasto Invio senza fare clic su alcun pulsante di invio? –

+1

@IstiaqueAhmed: A meno che non lo si cambi, invierà il modulo con qualsiasi azione abbia per impostazione predefinita. Se questo non è ciò che desideri, puoi impostare il comportamento desiderato tramite un listener 'onsubmit' sull'elemento'

'. – Travesty3

12

È possibile modificare l'azione modulo utilizzando formaction = "page1.php" nella proprietà del pulsante.

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

Nota: l'attributo formaction del tag button non è supportato in Internet Explorer 9 e versioni precedenti.

+0

Infatti, esiste un attributo come ['formaction'] (http://www.w3.org/TR/html-markup/button.submit.html#button.submit.attrs.attraction) nello standard HTML5. –

+0

Sembra la soluzione più pulita, grazie! –

6

Il modo migliore per affrontare con più pulsante di invio sta usando interruttore caso in Action Script

<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 di azione/Server Side:

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

?> 

Rif : W3Schools

+0

So che questa domanda/risposta è un po 'vecchia ma solo una nota: questa soluzione non va a un indirizzo diverso come richiesto. – Ezenhis