2012-01-04 5 views
23

Ho una forma simile a questo:presentare il modulo a un'altra pagina (che è diverso dalla pagina utilizzata in ACTION)

index.php

<form method="post" action="send.php"> 
    <textarea name="msg" id="msg"></textarea> 
    <input type="submit" value="Send" /> 
</form> 

Quindi, se entro qualcosa in textarea e cliccato su "Invia", viene inviato alla pagina "send.php". Ma voglio includere un altro pulsante per visualizzarlo in anteprima. Cioè, quando si fa clic su questo pulsante, il modulo sopra viene inviato a "preview.php" che verrà aperto in una nuova finestra/scheda vuota (pagina originale, ad esempio index.php sarà lì intatto). Questo è per visualizzare un'anteprima del messaggio, che l'utente sta per inviare.

Non so come farlo.

risposta

27

utilizzare JavaScript per modificare temporaneamente l'azione e di destinazione:

<form method="post" action="send.php" id="idOfForm"> 
    <textarea name="msg" id="msg"></textarea> 
    <input type="submit" value="Send" /> 
</form> 
<button onclick="doPreview();">Preview</button> 
<script type="text/javascript"> 
    function doPreview() 
    { 
     form=document.getElementById('idOfForm'); 
     form.target='_blank'; 
     form.action='preview.php'; 
     form.submit(); 
     form.action='send.php'; 
     form.target=''; 
    } 
</script> 
+0

Non sapevo che puoi avere un bersaglio vuoto per il modulo! È meraviglioso! –

+0

@VppMan Sarebbe bello vedere come lo hai mescolato. – Andremoniy

0

È possibile utilizzare JavaScript per modificare l'azione del modulo quando si fa clic sul pulsante e quindi inviarlo.

O semplicemente inviare il modulo tramite AJAX e quindi reindirizzare dopo aver ottenuto una risposta.

0
<form onreturn="someJavascriptFunction()" action="" method=""> 

creazione di una funzione js in grado di aprire questa anteprima pagina

+0

Non vedo "onreturn" nei documenti di moduli. – Noumenon

7

Lascia la tua forma un ID (Form1). L'azione della forma attuale può essere controllato in questo modo:

function setPreview() { 
    $('#form1').attr('target','_blank') 
    $('#form1').attr('action','http://yourpreviewurl.php') 
    $('#form1').submit() 
} 

function setSubmit() { 
    $('#form1').attr('target','') 
    $('#form1').attr('action','http://yourposturl.php') 
    $('#form1').submit() 
} 

hanno due bottoni, sia type="button", uno a chiamare setPreview e un altro per chiamare setSubmit

+1

grazie. Ho mescolato jQuery con l'idea di Aaron J Spetner. –

+0

Questo [articolo] (https://mentaljetsam.wordpress.com/2008/06/02/using-javascript-to-post-data-between-pages/) fa un passo avanti e fornisce un'implementazione abbastanza generica. – jpaugh

7

V'è ora un attributo per l'ingresso sostengono che gestisce questo:

<input type="submit" formaction=”differentThanNormalAction.php”> 
+0

Perfetto, grazie! – raphael

Problemi correlati