2011-02-23 142 views
1

我有兩種形式和一個按鈕。一切工作正常在Firefox。我得到一個新的窗口,一個Paypal付款,並在窗口中發生的一切,我得到的send_mail表單提交,將發送電子郵件給用戶。我如何在Chrome中完成這項工作?爲什麼它不起作用?我已經嘗試過任何東西(或者我認爲)!Onsubmit在Chrome中不起作用

所以:

<form name="registerForm" id="registerForm" target="_blank" action="paypal_url" method="post" onsubmit="$('#send_mail').submit();"> 
... 
</form> 

<form name="send_mail" id="send_mail" action="" method="post"> 
... 
</form> 

<a onclick="$('#registerForm').submit()">Go to paypal and send confirmation mail</a> 
+2

使用'submit()'時''onsubmit'不會被觸發。 – pimvdb 2011-02-23 16:15:34

回答

4

除非你有一個很好的理由使用僅限javascript的提交,爲什麼將表單設置爲不可用,如果有javascript錯誤?

使用類型爲submit的標準表單輸入,給它一個id,根據需要通過javascript更改提交的外觀或文本,然後創建onclick onslick作爲該功能頂層的事件,並讓它們返回false 。更好的回退。

我不知道爲什麼你想一次提交兩種形式,但如何對這種替代(請注意,我還沒有測試此代碼,但它應該傳達的想法):

<script type='text/javascript'> 
$('#fallback-register-submit').hide(); // Hide the submit button. 
$('#registration-link').show().click(function(){ // Show the link and attach the action. 
    $('#registerForm').submit(); 
    return false; // Don't bother following the link anchor. 
}); 
</script> 

<form name="registerForm" id="registerForm" target="_blank" action="paypal_url" method="post""><!-- Single form that does all of the submitting. --> 
... 
... 
<input type='submit' id='fallback-register-submit'>Register</input><!-- In the event of a javascript error for their browser, they can still buy your stuff! --> 
<a id='registration-submit' style='display:none'>Go to paypal and send confirmation mail</a> 
</form> 
+0

,因爲一種形式是貝寶形式,另一種是謝謝+更新數據庫上的東西 – Bogdan 2011-02-23 18:26:41

+0

嗯,如果你不能合併表格,當然你可以添加額外的提交到我發佈的代碼,儘管這並不理想。我唯一能想到的另一種方法是在PayPal之前提交表單,以便您瞭解用戶正在經歷您的流程,然後讓PayPal表單成爲多步驟中的最後一步形成。如果這對你來說不值得麻煩,或者如果它不是一個非常重要的付款表單,那麼爲JavaScript用戶留下一個表單或其他未提交的表單可能實際上只剩下所有這些。 – Kzqai 2011-02-24 00:05:36

+0

是的,這就是我要做的。我沒有看到任何其他的方式...... – Bogdan 2011-02-24 07:34:22

2

爲什麼不綁定都提交給你一個?

onclick="$('#send_mail').submit(); $('#registerForm').submit();" 

,如果你想在其他形式提交後的第一個:

onclick="$('#send_mail').submit(function() {$('#registerForm').submit();}); " 

假設你使用jQuery這裏

+0

第一種方法只提交#registerForm(打開PayPal窗口,但不提交#send_mail),其次沒有任何內容.. – Bogdan 2011-02-23 17:39:18

1

據我瞭解,你要提交表單使用鏈接?

爲什麼不使用「普通」JavaScript呢?沒有jQuery的:document.getElementById(....).submit()

或鏈接提交事件在正常jQuery的方式鏈接:

 
$(document).ready(function() { 
$(".yourLinkClass").click(function() { // or "#yourLinkId" for that matter 
    $("#registerForm").submit(); 
}); 
}); 

而且你還可以使用提交按鈕;)

+0

是的,這工作正常,但它不提交其他形式.. #send_mail – Bogdan 2011-02-23 17:40:21

+0

那麼,如果你想提交兩個表單,我建議,例如,讓他們(或者至少有一個)在不同的iframe中。或者,我認爲這是一個更好的變體,您可以將所有必要的數據收集在一個表單中,將其傳遞到應該在同一個窗口中打開的頁面,並且該頁面將數據傳遞給您,現在使用您的其他表單,到您在_blank中打開的頁面。或者,在我建議的腳本中,您可以添加「_blank」表單的相應行。 – Ibolit 2011-02-23 18:48:18