Подтвердить что ты не робот

Как открыть новое окно в форме submit

У меня есть форма отправки и вы хотите открыть новое окно, когда пользователи отправят форму, чтобы я мог отслеживать ее в аналитике.

Вот код, который я использую:

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

Ответ 1

Нет необходимости в Javascript, вам просто нужно добавить атрибут target="_blank" в свой тег формы.

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

Ответ 2

В веб-приложении базы данных, которое использует всплывающее окно для отображения распечаток данных базы данных, это работало достаточно хорошо для наших нужд (протестировано в Chrome 48):

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

Хитрость заключается в том, чтобы сопоставить атрибут target в теге <form> со вторым аргументом в вызове window.open в обработчике onsubmit.

Ответ 3

onclick может не быть лучшим событием для присоединения этого действия. Каждый раз, когда кто-либо щелкнет в любом месте формы, он откроет окно.

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

Ответ 4

Чтобы подобный эффект сформировал атрибут target, вы также можете использовать атрибут formtarget в input[type="submit]" или button[type="submit"].

С MDN:

... этот атрибут является именем или ключевым словом, указывающим, где отображать ответ, полученный после отправки формы. Это имя или ключевое слово для контекста просмотра (например, вкладка, окно или встроенный фрейм). Если этот атрибут указан, он переопределяет целевой атрибут владельца формы элементов. Следующие ключевые слова имеют особое значение:

  • _self: Загрузить ответ в тот же контекст просмотра, что и текущий. Это значение является значением по умолчанию, если атрибут не указан.
  • _blank. Загрузите ответ в новый безымянный контекст просмотра.
  • _parent: загрузить ответ в родительский контекст просмотра текущего. Если родитель отсутствует, этот параметр ведет себя так же, как _self.
  • _top: загрузить ответ в контекст просмотра верхнего уровня (то есть контекст просмотра, который является предком текущего и не имеет родителя). Если родителя нет, эта опция ведет себя так же, как _self.

Ответ 5

Код, который вы указали, нуждается в исправлении. В теге формы вы должны приложить значение атрибута onClick в двойной кавычки:

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

Вам также необходимо позаботиться о том, чтобы первый параметр window.open также был заключен с использованием кавычек.

Ответ 6

Обычно я использую небольшой фрагмент jQuery глобально для открытия любых внешних ссылок в новой вкладке/окне. Я добавил селектор для формы для своего собственного сайта, и он отлично работает до сих пор:

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

Ответ 7

Я считаю, что JQuery работает для вас, пожалуйста, проверьте код ниже.

это заставит ваше действие отправки работать и откроет ссылку в новой вкладке, хотите ли вы снова открыть URL-адрес действия или новую ссылку

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

Этот код работает для меня идеально..

Ответ 8

window.open не работает во всех браузерах, Google он и вы найдете способ обнаружения правильного типа диалога.

Кроме того, переместите вызов onclick на кнопку ввода, чтобы он срабатывал только при подаче пользователем.

Ответ 9

Я нашел решение для этого. Эта страница помогла мне сегодня, поэтому я снова публикую здесь.

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

Вышеприведенный код - это код для одной кнопки. Вы нажимаете кнопку, и она будет перерисовывать текущий экран от покупки до предварительного одобрения. В то же время он открывает новое окно и передает новое окно в PayPal.