Come aprire una nuova finestra sull'invio del modulo


127

Ho un modulo di invio e desidero che apra una nuova finestra quando gli utenti inviano il modulo in modo da poterlo tracciare sull'analisi.

Ecco il codice che sto usando:

<form action="http://URL at mailchimp subscriber URL.com" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" onclick=window.open(google.html,'','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');>
    <label for="name">Your Name</label><input type="text" value="" name="FNAME" class="required" id="mce-FNAME">
    <br/>
    <br/>
    <label for="email">Your Email </label><input type="text" value="" name="EMAIL" class="required email" id="mce-EMAIL">
    <br/>
    <br/>
    <input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="submit">
</form>
</div>

Risposte:


272

Non è necessario Javascript, devi solo aggiungere un target="_blank"attributo nel tag del modulo.

<form target="_blank" action="http://example.com"
      method="post" id="mc-embedded-subscribe-form"
      name="mc-embedded-subscribe-form" class="validate"
>

5
se aggiungi target = _blank, non hai bisogno dell'evento onClick.
WhyNotHugo,

5
Sono contento di essermi imbattuto in questo post! L'aggiunta di target = "_ blank" al tag del modulo ha risolto il mio problema di dover aprire una nuova finestra!
Kaitlynjanine,

3
questo non risponde esattamente alla domanda del PO, ma è la risposta più utile in generale, target="_blank"invece di Javascript
Kip,

2
target = "blank" funziona bene. developer.mozilla.org/en-US/docs/HTML/Element/form
Eric

5
almeno su IE 11, target = "_ blank" crea una nuova scheda nella finestra del browser corrente invece di creare una nuova finestra del browser ..... IMHO, una nuova scheda è diversa da una nuova finestra del browser
Marcelo Bezerra

33

In un'applicazione di database basata sul Web che utilizza una finestra pop-up per visualizzare stampe dei dati del database, questo ha funzionato abbastanza bene per le nostre esigenze (testato in Chrome 48):

<form method="post" 
      target="print_popup" 
      action="/myFormProcessorInNewWindow.aspx"
      onsubmit="window.open('about:blank','print_popup','width=1000,height=800');">

Il trucco è abbinare l' targetattributo sul <form>tag al secondo argomento della window.openchiamata nel onsubmitgestore.


Questo dà il controllo della dimensione della finestra. Eccellente.
Chalky,

migliore soluzione in questa pagina, testata e funziona alla perfezione.
Manny Ramirez,

Questo è esattamente quello che stavo cercando quando ho generato un PDF in una finestra separata su submit.
jrob007,

7

onclickpotrebbe non essere il miglior evento a cui allegare tale azione. Ogni volta che qualcuno fa clic in qualsiasi punto del modulo, si aprirà la finestra.

<form action="..." ...
    onsubmit="window.open('google.html', '_blank', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');return true;">

7

Per un effetto simile targetall'attributo form , puoi anche usare l' formtargetattributo di input[type="submit]"obutton[type="submit"] .

Da MDN :

... questo attributo è un nome o una parola chiave che indica dove visualizzare la risposta ricevuta dopo aver inviato il modulo. Questo è un nome o una parola chiave per un contesto di navigazione (ad esempio scheda, finestra o frame incorporato). Se questo attributo viene specificato, sovrascrive l'attributo target del proprietario del modulo degli elementi. Le seguenti parole chiave hanno significati speciali:

  • _self: carica la risposta nello stesso contesto di navigazione di quella corrente. Questo valore è predefinito se l'attributo non è specificato.
  • _blank: carica la risposta in un nuovo contesto di navigazione senza nome.
  • _parent: carica la risposta nel contesto di navigazione principale di quello corrente. Se non esiste un genitore, questa opzione si comporta allo stesso modo di _self.
  • _top: carica la risposta nel contesto di navigazione di livello superiore (ovvero, il contesto di navigazione che è un antenato di quello corrente e non ha parent). Se non esiste un genitore, questa opzione si comporta allo stesso modo di _self.

Molto utile quando si hanno più pulsanti di invio.
hrvoj3e,

Sembra che abbiano rimosso quel contenuto dalla pagina dell'elemento di input. Informazioni simili sull'attributo formtarget sono disponibili nella pagina dell'elemento pulsante: developer.mozilla.org/en-US/docs/Web/HTML/Element/…
peater

3

Il codice che hai fornito deve essere corretto. Nel tag del modulo devi racchiudere il valore dell'attributo onClick tra virgolette doppie:

"window.open('google.htm','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');"

È inoltre necessario assicurarsi che anche il primo parametro di window.opensia racchiuso tra virgolette.


2

In genere utilizzo un piccolo frammento jQuery a livello globale per aprire eventuali collegamenti esterni in una nuova scheda / finestra. Ho aggiunto il selettore per un modulo per il mio sito e funziona bene finora:

// URL target
    $('a[href*="//"]:not([href*="'+ location.hostname +'"]),form[action*="//"]:not([href*="'+ location.hostname +'"]').attr('target','_blank');

0

credo che questo jquery funzioni bene per te, controlla un codice qui sotto.

questo farà funzionare l'azione di invio e aprirà un collegamento in una nuova scheda se si desidera aprire nuovamente l'URL dell'azione o un nuovo collegamento

jQuery('form').on('submit',function(e){
setTimeout(function () { window.open('https://www.google.com','_blank');}, 1000);});})

Questo codice funziona perfettamente per me ..


-4

window.open non funziona su tutti i browser, Google e troverai un modo per rilevare il tipo di dialogo corretto.

Inoltre, sposta la chiamata onclick sul pulsante di input affinché si attivi solo quando l'utente invia.


1
il clic sul pulsante di input è errato. Quindi, se l'utente fa clic su di esso, ma si allontana prima di rilasciarlo, si attiverà comunque.
Matthew Flaschen,

-12

Ho trovato una soluzione anche a questo. Questa pagina mi ha aiutato oggi, quindi, sto postando di nuovo anche qui.

/** This is the script that will redraw current screen and submit to paypal. */
echo '<script>'."\n" ;
echo 'function serverNotifySelected()'."\n" ;
echo '{'."\n" ;
echo '    window.open(\'\', \'PayPalPayment\');'."\n" ;
echo '    document.forms[\'paypal_form\'].submit();'."\n" ;
echo '    document.forms[\'server_responder\'].submit();'."\n" ;
echo '}'."\n" ;
echo '</script>'."\n" ;

/** This form will be opened in a new window called PayPalPayment. */
echo '<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" name="paypal_form" method="post" target="PayPalPayment">'."\n" ;
echo '<input type="hidden" name="cmd" value="_s-xclick">'."\n" ;
echo '<input type="hidden" name="custom" value="'.$transaction_start.'">'."\n" ;
echo '<input type="hidden" name="hosted_button_id" value="'.$single_product->hosted_button_id.'">'."\n" ;
echo '<table>'."\n" ;
echo '    <tr>'."\n";
echo '        <td><input type="hidden" name="'.$single_product->hide_name_a.'" value="'.$single_product->hide_value_a.'">Local</td>'."\n" ;
echo '    </tr>'."\n" ;
echo '    <tr>'."\n" ;
echo '        <td>'."\n" ;
echo '        <input type="hidden" name="'.$single_product->hide_name_b.'" value="'.$single_product->hide_value_b.'" />'.$single_product->short_desc.' $'.$adj_price.' USD'."\n" ;
                // <select name="os0">
                //     <option value="1 Day">1 Day $1.55 USD</option>
                //     <option value="All Day">All Day $7.50 USD</option>
                //     <option value="3 Day">3 Day $23.00 USD</option>
                //     <option value="31 Day">31 Day $107.00 USD</option>
                // </select>
echo '        </td>'."\n" ;
echo '    </tr>'."\n" ;
echo '</table>'."\n" ;
echo '<input type="hidden" name="currency_code" value="USD">'."\n" ;
echo '</form>'."\n" ;

/** This form will redraw the current page for approval. */
echo '<form action="ProductApprove.php" name="server_responder" method="post" target="_top">'."\n" ;
echo '<input type="hidden" name="trans" value="'.$transaction_start.'">'."\n" ;
echo '<input type="hidden" name="prod_id" value="'.$this->product_id.'">'."\n" ;
echo '</form>'."\n" ;

/** No form here just an input and a button.  onClick will handle all the forms */
echo '<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" alt="PayPal - The safer, easier way to pay online!" onclick="serverNotifySelected()">'."\n" ;
echo '<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">'."\n" ;

Il codice sopra è il codice per un pulsante. Premi il pulsante e ridisegna la schermata corrente dall'acquisto alla pre-approvazione. Allo stesso tempo apre una nuova finestra e passa quella nuova finestra a PayPal.


5
L'OP ha affermato che sono nuovi al codice: l'IMO che pubblica un intero carico di codice (orribilmente formattato) relativo ai pulsanti di Paypal non li aiuterà
Mike,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.