Magento – кнопка отправки кода купона не работает

У меня есть выборка, к которой странная ситуация с magento. Шаблон или расширения, которые они установили, по всей видимости, сломали кнопку отправки кода купона на странице корзины. Люди не могли отправить код купона, нажав кнопку «Применить купон». Им пришлось нажать Enter. Я не мог найти javascript, который вызывал ошибку.

Любые решения для этого.


person Bhavesh Godhani    schedule 03.01.2014    source источник


Ответы (5)


Я нашел решение довольно простое.

Найдите надоедливый код:

<button type="button" title="Apply Coupon" onclick="discountForm.submit(false)" value="Apply Coupon"><span><span>Apply Coupon</span></span></button>

и измените его на:

<button title="Apply Coupon" onclick="discountForm.submit(false)" value="Apply Coupon"><span><span>Apply Coupon</span></span></button>

Удалив тип = «кнопка», ошибка, похоже, исправится сама собой. После удаления типа кнопка волшебным образом снова заработала! Я знаю, что лечение симптома не проблема, но это работает.

person Bhavesh Godhani    schedule 03.01.2014

** Это решение работает на 100 % ** Найдите этот код (строка 39 в notepad++) в файлеКупон.phtml.

<button type="button" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Apply Coupon')) ?>" class="button" onclick="discountForm.submit(false)" value="<?php echo Mage::helper('core')->quoteEscape($this->__('Apply Coupon')) ?>"><span><span><?php echo $this->__('Apply Coupon') ?></span></span></button>

*заменить на это код *

<button type="Apply Coupon" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Apply Coupon')) ?>" class="button" onclick="discountForm.submit(false)" value="<?php echo Mage::helper('core')->quoteEscape($this->__('Apply Coupon')) ?>"><span><span><?php echo $this->__('Apply Coupon') ?></span></span></button>

очистите кеш и еще раз проверьте, должно ли все работать

person Randhir Yadav    schedule 15.12.2015

Я исправил это, изменив тип для отправки. Исправлены кнопки «Применить» и «Отмена».

person Joshua Kincheloe    schedule 08.10.2018

Решение, которое Бхавеш опубликовал здесь, кажется быстрым, но не всегда работает.

Большинство тем Magento используют «prototype.js» в качестве фреймворка javascript для обработки взаимодействия с клиентом. Иногда мы неправильно понимаем переменную «$», используемую здесь с переменной jquery, и мы можем в конечном итоге использовать jquery также на страницах для настройки страницы.

в таком случае мы в конечном итоге используем 2 фреймворка javascript «prototype.js» и «jQuery» на одном веб-сайте, что приведет к конфликту. Именно из-за этого конфликта кнопка купона не работает.

Чтобы решить эту проблему, вы должны сделать следующее:

  1. Используйте параметр разрешения конфликтов jQuery и назначьте любую другую переменную, кроме «$», для вызова jquery. например: $(".flowplayer .info").hover следует заменить на jQuery(".flowplayer .info").hover
  2. Второе, что вы можете сделать, это вызвать сценарий прототипа после вызова сценария jquery.

eg

<script type="text/javascript" src="http://mywebsite/js/jquery.tools.min.js">

<script type="text/javascript">jQuery.noConflict();</script>

<script type="text/javascript" src="http://mywebsite/js/prototype/prototype.js"></script>

person Muhammed Masood Alingaparambil    schedule 15.04.2015

Решение, которое @Bhavesh разместил здесь, кажется быстрым, но не всегда работает.

Большинство тем Magento используют prototype.js в качестве фреймворка javascript для обработки взаимодействия с клиентом. Иногда мы неправильно понимаем переменную $, используемую здесь, с переменной jquery, и мы можем в конечном итоге использовать jquery также на страницах для настройки страницы.

в таком случае мы в конечном итоге используем 2 фреймворка javascript prototype.js и jQuery на одном веб-сайте, что приведет к конфликту. Именно из-за этого конфликта кнопка купона не работает.

Чтобы решить эту проблему, вы должны сделать следующее:

Используйте параметр разрешения конфликтов jQuery и назначьте любую другую переменную, кроме $, для вызова jquery. например: $(".flowplayer .info").hover следует изменить на jQuery(".flowplayer .info").hover Второе, что вы можете сделать, это вызвать сценарий прототипа после вызова сценария jquery. например

<script type="text/javascript" src="http://mywebsite/js/jquery.tools.min.js">
<script type="text/javascript">jQuery.noConflict();</script>
<script type="text/javascript" src="http://mywebsite/js/prototype/prototype.js"></script>
person Adrian Fdg    schedule 14.10.2015
comment
Не могли бы вы прочитать синтаксис StackOverflow Markdown, чтобы сделать вопросы и ответы более читабельными (stackoverflow.com/editing-help). Спасибо - person Verhagen; 14.10.2015