2010-08-11 98 views
0

在Magento購物車上,有兩種表單需要填寫:運費估算和優惠券代碼。提交表單後,每次刷新頁面。運費估算表格需要在優惠券表格之前提交,以便優惠券可以驗證該國家。如何在頁面加載時調用JavaScript函數一次,頁面重新加載,不要再次調用它

我想要做的是打電話給裝運表單的coShippingMethodForm.submit()。這樣國家就被裝載了,然後優惠券表格會檢查國家。這具有附加的優點,即顯示初始運費而無需用戶提交表格。

我的挑戰:如果我打電話給coShippingMethodForm.submit() - 它會刷新頁面,然後不斷刷新b/c coShippingMethodForm.submit()不斷提交和刷新。

如何調用該函數一次,頁面刷新並且不再運行(除非用戶單擊提交按鈕)。

​​

+5

聽起來像是一個工作.. 。AJAX! – jtbandes 2010-08-11 05:39:18

+0

是的,這聽起來像很多令人耳目一新的......也許一些JavaScript不會傷害:) – jhartz 2010-08-11 05:51:27

回答

1

您可以使用cookie來防止重新加載resumbit。
爲broswer cookie的JS可以在這裏找到http://www.quirksmode.org/js/cookies.html
在你的JS功能coShippingMethodForm.submit

coShippingMethodForm.submit = function(){ 
    //check cookie here 
    if(readCookie('already_submit')==1) 
      return; 
    createCookie('already_submit', 1, 1); //for 1 day 
    //old code here 
} 

而且在提交按鈕,添加eraseCookie行:

<input type="submit" id="your_submit_button" 
     onclick="eraseCookie('already_submit');" /> 
+0

這兩個答案可能會工作,但他們讓我意識到一個更好的方法:檢查是否存在運費率div或不。如果不是,則提交coShippingMethodForm。這裏使用JS: \t \t window.loaded = shippingLoaded(); \t \t \t功能shippingLoaded(){ \t \t \t \t如果(checkobject( 「共航運方法-形式」)){ \t \t \t \t \t coShippingMethodForm.submit(); \t \t \t \t} \t \t \t} \t \t \t功能checkobject(OBJ){ \t \t \t \t如果(的document.getElementById(OBJ)){返回false; } else {return true; } \t \t \t} – 2010-08-24 02:18:42

1

我看到你正在使用PHP,爲什麼不只是有一個隱藏的表單 <input type='hidden' name='countrySubmitted' value='true' /> ,然後當PHP執行這個頁面檢查,看是否該值設置,如果沒有則調用該函數提交。

echo "<script type='text/javascript'>"; 
if (isset($_POST['countrySubmitted'])) 
echo "document.coShippingMethodForm.Submit();"; 
echo "</script>"; 
相關問題