Form gönderildiğinde yeni bir pencere nasıl açılır


128

Gönderme formum var ve kullanıcılar formu gönderdiğinde yeni bir pencere açmasını istiyorum, böylece analitikte takip edebiliyorum.

İşte kullandığım kod:

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

Yanıtlar:


273

Javascript'e gerek yok, sadece target="_blank"form etiketinize bir nitelik eklemeniz gerekiyor.

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

5
target = _blank'i eklerseniz, onClick olayına ihtiyacınız olmaz.
WhyNotHugo

5
Bu gönderiye rastladığıma sevindim! Form etiketine target = "_ blank" eklemek, yeni bir pencere açmaya ihtiyaç duyma sorunumu çözdü!
kaitlynjanine

3
bu, OP'nin sorusuna tam olarak cevap vermiyor, ancak genel olarak daha faydalı bir cevaptır - target="_blank"Javascript yerine kullanın
Kip 18'12

2
target = "blank" gayet iyi çalışıyor. developer.mozilla.org/en-US/docs/HTML/Element/form
Eric

5
en azından IE 11'de, target = "_ blank" yeni bir tarayıcı penceresi oluşturmak yerine mevcut tarayıcı penceresinde yeni bir sekme oluşturur ..... IMHO, yeni bir sekme yeni bir tarayıcı penceresinden farklı
Marcelo Bezerra

33

Veritabanı verilerinin çıktılarını görüntülemek için bir açılır pencere kullanan web tabanlı bir veritabanı uygulamasında bu, ihtiyaçlarımız için yeterince iyi çalıştı (Chrome 48'de test edildi):

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

Hüner maç için targetüzerine niteliğini <form>ikinci argüman ile etiketi window.openiçinde çağrı onsubmitişleyicisi.


Bu, pencere boyutu kontrolü sağlar. Mükemmel.
Chalky

bu sayfadaki en iyi çözüm, test edildi ve mükemmel çalışıyor.
Manny Ramirez

Gönderirken ayrı bir pencerede PDF oluştururken tam olarak aradığım şey buydu.
jrob007

7

onclickbu eylemi eklemek için en iyi olay olmayabilir. Herhangi biri formun herhangi bir yerine tıkladığında pencereyi açacaktır.

<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

Formun targetözniteliğine benzer bir etki için veya formtargetözniteliğini de kullanabilirsiniz .input[type="submit]"button[type="submit"]

Gönderen MDN'yi :

... bu öznitelik, formu gönderdikten sonra alınan yanıtın nerede görüntüleneceğini belirten bir ad veya anahtar sözcüktür. Bu, bir gözatma bağlamının adı veya anahtar kelimesidir (örneğin, sekme, pencere veya satır içi çerçeve). Bu öznitelik belirtilirse, öğelerin form sahibinin hedef özniteliğini geçersiz kılar. Aşağıdaki anahtar kelimelerin özel anlamları vardır:

  • _self: Yanıtı, geçerli olanla aynı göz atma bağlamına yükleyin. Öznitelik belirtilmezse bu değer varsayılan değerdir.
  • _blank: Yanıtı yeni bir adsız gözatma bağlamına yükleyin.
  • _parent: Yanıtı, mevcut olanın ana göz atma bağlamına yükleyin. Ebeveyn yoksa, bu seçenek _self ile aynı şekilde davranır.
  • _top: Yanıtı, üst düzey gözatma bağlamına (yani, geçerli olanın atası olan ve üst öğesi olmayan göz atma bağlamına) yükleyin. Ebeveyn yoksa, bu seçenek _self ile aynı şekilde davranır.

Birden fazla gönderme düğmesi olduğunda çok kullanışlıdır.
hrvoj3e

Görünüşe göre bu içeriği giriş öğesi sayfasından kaldırmışlar. Formtarget özniteliğiyle ilgili benzer bilgiler düğme öğesi sayfasında bulunabilir: developer.mozilla.org/en-US/docs/Web/HTML/Element/…
peater

3

Verdiğiniz kodun düzeltilmesi gerekiyor. Form etiketinde, onClick özellik değerini çift tırnak içine almanız gerekir:

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

Ayrıca, ilk parametresinin window.opentırnak işaretleri içine alınması gerektiğine de dikkat etmeniz gerekir .


2

Herhangi bir harici bağlantıyı yeni bir sekme / pencerede açmak için genel olarak küçük bir jQuery parçacığı kullanıyorum. Kendi sitem için bir form seçiciyi ekledim ve şu ana kadar iyi çalışıyor:

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

0

Bu jquery'nin işinize yarayacağına inanıyorum, lütfen aşağıdaki kodu kontrol edin.

bu, eylem url'sini yeniden açmak veya yeni bir bağlantı açmak isteyip istemediğinizi gönder eyleminizin çalışmasını ve yeni sekmede bir bağlantı açmasını sağlar

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

Bu kod benim için mükemmel çalışıyor ..


-4

window.open tüm tarayıcılarda çalışmaz, Google bunu ve doğru diyalog türünü tespit etmenin bir yolunu bulacaksınız.

Ayrıca, onclick çağrısını yalnızca kullanıcı gönderdiğinde tetiklemesi için giriş düğmesine taşıyın.


1
giriş düğmesine tıklamak yanlış. Ardından, kullanıcı tıklarsa ancak bırakmadan önce uzaklaşırsa, yine de ateşlenecektir.
Matthew Flaschen

-12

Buna da bir çözüm buldum. Bu sayfa bugün bana yardımcı oldu, ben de burada yeniden gönderiyorum.

/** 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" ;

Yukarıdaki kod, bir düğmenin kodudur. Düğmeye bastığınızda mevcut ekranı satın alma işleminden ön onaya kadar yeniden çizecektir. Aynı zamanda yeni bir pencere açar ve bu yeni pencereyi PayPal'a iletir.


5
OP, kodlama konusunda yeni olduklarını söyledi - Paypal düğmeleriyle ilgili bir sürü (korkunç biçimde biçimlendirilmiş) kod yayınlayan IMO onlara yardımcı olmayacak
Mike
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.