В корзине покупок Magento необходимо заполнить 2 формы: оценка доставки и код купона. Каждый обновляет страницу после отправки формы. Форма оценки доставки должна быть отправлена перед формой купона, чтобы купон мог подтвердить страну.

Я бы хотел позвонить в форму доставки coShippingMethodForm.submit() при загрузке. Таким образом, страна загружается, а затем форма купона проверяет страну. Это имеет дополнительное преимущество, заключающееся в том, что начальные тарифы на доставку отображаются без необходимости отправки формы пользователем.

Моя задача: если я вызываю coShippingMethodForm.submit() при загрузке - он обновит страницу, а затем будет постоянно обновлять b / c, coShippingMethodForm.submit() продолжает отправлять и обновлять.

Как мне вызвать эту функцию один раз, страница обновится и больше не запустится (если пользователь не нажмет кнопку отправки).

Пример страницы корзины Magento, о которой я говорю

0
Joe Fletcher 11 Авг 2010 в 09:34

2 ответа

Лучший ответ

Вы можете использовать файлы cookie, чтобы предотвратить повторную загрузку.
Функцию js для файлов cookie broswer можно найти здесь 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');" />
1
Bang Dao 11 Авг 2010 в 05:50

Я вижу, вы используете PHP, почему бы просто не создать скрытую форму <input type='hidden' name='countrySubmitted' value='true' /> а затем, когда php отображает страницу, проверьте, установлено ли значение, если нет, вызовите функцию для отправки.

echo "<script type='text/javascript'>";
if (isset($_POST['countrySubmitted']))
echo "document.coShippingMethodForm.Submit();";
echo "</script>";
1
Robert 11 Авг 2010 в 05:46