2010-08-11 111 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>"; 
相关问题