Выбранная проверка в Magento - PullRequest
       17

Выбранная проверка в Magento

1 голос
/ 26 сентября 2011

Я использую плагин Chosen jQuery / Prototype для замены выбранных полей в Magento. В Magento уже есть система проверки, написанная в прототипе. К сожалению, эти двое не играют приятно. Всякий раз, когда выбран выбранный, проверка полностью игнорируется.

Я пытался выполнить ручную проверку jquery, но она не работает. Что у меня так далеко:

$j(".input-box select").chosen(function(){
        $j(this).each(function(){

            $j(this).addClass('required-entry product-custom-option')

        });

}).change( opConfig.reloadPrice() );

К сожалению, когда пользователь нажимает кнопку «Добавить в корзину», он просто продолжает игнорировать вышеуказанное.

Я бы хотел связать Chosen с системой проверки, которая уже установлена. Вот файл проверки Magento:

http://demo.magentocommerce.com/js/prototype/validation.js

и вот страница, где вы можете проверить валидацию (нажмите добавить в корзину, не выбирая никаких опций продукта):

http://demo.magentocommerce.com/catalog/product/view/id/119/s/coalesce-functioning-on-impatience-t-shirt/category/4/

РЕДАКТИРОВАТЬ: Вот фактический код, который указан на странице продукта Magento: http://pastie.org/2599676

1 Ответ

1 голос
/ 24 мая 2013

Я нашел способ заставить это работать без изменения чего-либо, кроме кода CSS.По некоторым причинам проверка прототипа / magento проверяет, является ли элемент select видимым, и не будет выполнять никакой проверки, если это не так.Хотя на самом деле он проверяет только атрибут style, поэтому сначала немного jQuery:

$('.product-view select').removeAttr('style');

Затем исправьте это с помощью css:

.product-view select { display: none !important; }

Это вводит несколько икоты, вам нужно будет явно установить ширину для выбранного элемента.Также сообщение об ошибке проверки будет выше выбранного контейнера, поэтому установите родительский элемент в положение относительное и добавьте:

.product-view .chzn-container { width: 140px !important; position: absolute; top: 0; }

, чтобы все упорядочить.

...