2010-08-11 6 views
0

Sur un panier Magento, il y a 2 formulaires à remplir: estimation de livraison et code promo. Chaque actualise la page après l'envoi du formulaire. Le formulaire d'estimation d'expédition doit être soumis avant le formulaire de coupon afin que le coupon puisse valider le pays.Comment appeler une fonction javascript une fois au chargement de la page, la page se recharge, ne l'appelez plus

Ce que je voudrais faire est d'appeler le coShippingMethodForm.submit() du formulaire d'expédition sur le chargement. De cette façon, le pays est chargé, puis le formulaire de coupon va vérifier le pays. Cela présente l'avantage supplémentaire que les tarifs d'expédition initiaux sont affichés sans que l'utilisateur doive soumettre le formulaire.

Mon défi: si j'appelle coShippingMethodForm.submit() lors du chargement - il rafraîchira la page et actualisera continuellement b/c le coShippingMethodForm.submit() continue de soumettre et de rafraîchir.

Comment appeler cette fonction une fois, actualiser la page et ne pas l'exécuter à nouveau (sauf si l'utilisateur clique sur le bouton de soumission).

Example Magento cart page I'm referring to

+5

Sons comme un travail pour .. AJAX! – jtbandes

+0

Ouais, cela semble beaucoup de rafraîchissement ... peut-être un peu de JavaScript ne ferait pas mal :) – jhartz

Répondre

1

Vous pouvez utiliser un cookie pour empêcher la reprise du rechargement.
js de fonction pour cookie broswer peuvent être trouvés ici http://www.quirksmode.org/js/cookies.html
Dans votre fonction 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 
} 

Et soumettre le bouton, ajouter eraseCookie ligne:

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

Les deux réponses ici fonctionneraient probablement, mais ils m'ont fait réaliser une meilleure façon: vérifier si les frais de livraison div est présent ou ne pas. Sinon, soumettez coShippingMethodForm. Voici le JS est utilisé: \t \t window.loaded = shippingLoaded(); fonction \t \t \t shippingLoaded() { \t \t \t \t if (checkobject ("co-shipping-méthode-forme")) { \t \t \t \t \t coShippingMethodForm.submit(); \t \t \t \t} \t \t \t} \t \t fonction \t checkobject (obj) { \t \t \t \t if (document.getElementById (obj)) {return false; } else {return true; } \t \t \t} –

1

Je vois que vous utilisez PHP, pourquoi ne pas avoir juste une forme cachée <input type='hidden' name='countrySubmitted' value='true' /> et puis quand php rend la vérification de la page pour voir si la valeur est définie, sinon ensuite appeler la fonction soumettre.

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