[英]javascript form submit does not work in chrome
我有以下 html:
<body>
<form action="site1">
<input type="image" name="submit" border="0" src="images/front/search_travel.png" alt="" onclick="provider_popup();"/>
</form>
<form name="frmRight1" action="site2" target="_blank" >
<input type="hidden" name="sector_id" id="sector_id" value="90" />
<input type="submit" style="visibility:hidden;" />
</form>
<script type="text/javascript">
function provider_popup (){
document.frmRight1.submit();
return false;
}
</script>
</body>
當我提交名稱為submit
的按鈕時,我得到另一個選項卡,它將加載“site2”
但是這個過程在 chrome 中不起作用。
讓我知道原因
好的,您還需要阻止圖像按鈕提交其表單。 您的 function 返回 false,但您需要將其返回給 onclick,因此出現了問題。 像這樣做:
onclick="return provider_popup();"
無論如何,我建議您放棄<input type="image">
方法,並使用具有onclick
屬性的純元素。 使您的 HTML 更簡單,即
<body>
<img src="images/front/search_travel.png" alt="Submit" onclick="provider_popup();" />
<form name="frmRight1" action="site2" target="_blank" >
<input type="hidden" name="sector_id" id="sector_id" value="90" />
<input type="submit" style="visibility:hidden;" />
</form>
<script type="text/javascript">
function provider_popup () {
document.forms['frmRight1'].submit();
}
</script>
</body>
另一種選擇是將圖像包裝在錨<a href...
,然后將onclick
應用到該位置。
我有同樣的問題。 帶了我一整天。 就我而言,Chrome 的問題在於 Chrome 阻止了我的操作並聲明 Chrome 阻止了彈出窗口。 這是我用來解決這個問題的代碼:
/** 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" ;
此代碼不會顯示為 Chrome 的彈出窗口。 它只是一個按鈕的代碼。 按下按鈕時,它將當前屏幕更改為預先批准並打開一個新頁面供 PayPal 填寫。
我發現如果新的 window 通過按鈕按下打開,那么 Chrome 不會將其視為彈出窗口。 如果您嘗試使用計時器打開新的 window,則 Chrome 會將定時打開的 window 視為彈出窗口。
document.frmRight1
僅適用於某些瀏覽器。
嘗試
document.forms['frmRight1']
代替。
或者,給表單一個id
,如<form id="frmRight1" name...
並通過document.getElementById('frmRight1')
引用它。
有關document
屬性的更多信息,請參閱此: http://www.w3schools.com/jsref/dom_obj_document.asp
代替
document.frmRight1.submit();
和
document.forms["frmRight1"].submit();
好的,您需要同時提交 forms 並不清楚。 這很棘手。 我發現這樣做的唯一方法是引入一個小的等待時間:
<script type="text/javascript">
function provider_popup (){
document.forms['frmRight1'].submit();
setTimeout("doPost()", 10);
return false;
}
function doPost()
{
document.forms[0].submit();
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.