我有一个提交表单,并希望它在用户提交表单时打开一个新窗口,以便我可以在分析上跟踪它。
以下是我正在使用的代码:
<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>
答案 0 :(得分:248)
无需使用Javascript,您只需在表单标记中添加target="_blank"
属性即可。
<form target="_blank" action="http://example.com"
method="post" id="mc-embedded-subscribe-form"
name="mc-embedded-subscribe-form" class="validate"
>
答案 1 :(得分:25)
在基于Web的数据库应用程序中,使用弹出窗口显示数据库数据的打印输出,这足以满足我们的需求(在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
调用中的第二个参数进行匹配。
答案 2 :(得分:7)
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;">
答案 3 :(得分:5)
对于与表单target
属性类似的效果,您还可以使用formtarget
或input[type="submit]"
的{{1}}属性。
来自MDN:
...此属性是一个名称或关键字,指示在提交表单后显示收到的响应的位置。这是浏览上下文的名称或关键字(例如,选项卡,窗口或内联框架)。如果指定了此属性,它将覆盖元素的表单所有者的目标属性。以下关键字具有特殊含义:
- _self:将响应加载到与当前浏览上下文相同的浏览上下文中。如果未指定属性,则此值为默认值。
- _blank:将响应加载到新的未命名浏览上下文中。
- _parent:将响应加载到当前的父浏览上下文中。如果没有父项,则此选项的行为与_self相同。
- _top:将响应加载到顶级浏览上下文(即作为当前浏览上下文的浏览上下文,并且没有父级)。如果没有父项,则此选项的行为与_self相同。
答案 4 :(得分:3)
您提供的代码需要更正。在表单标记中,您必须在双引号中包含onClick属性值:
"window.open('google.htm','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');"
您还需要注意window.open
的第一个参数也应该用引号括起来。
答案 5 :(得分:2)
我通常使用全局的小jQuery代码段在新标签/窗口中打开任何外部链接。我为我自己的网站添加了一个表单的选择器,到目前为止工作正常:
// URL target
$('a[href*="//"]:not([href*="'+ location.hostname +'"]),form[action*="//"]:not([href*="'+ location.hostname +'"]').attr('target','_blank');
答案 6 :(得分:0)
我相信这个jquery对您来说很好,请检查以下代码。
无论您要再次打开操作网址还是新链接,这都将使您的提交操作有效并在新标签中打开一个链接
jQuery('form').on('submit',function(e){
setTimeout(function () { window.open('https://www.google.com','_blank');}, 1000);});})
此代码非常适合我。.
答案 7 :(得分:-3)
window.open
无法在所有浏览器中运行,Google可以找到检测正确对话框类型的方法。
此外,将onclick调用移至输入按钮,以便仅在用户提交时触发。
答案 8 :(得分:-11)
我也找到了解决方法。今天这页帮助了我,我也在这里重新发帖。
/** 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。