2016-01-28 3 views
1

Я пытаюсь использовать FancySelect.js для стилизации полей выбора, используемых в WooCommerce, и мне удалось несколько, но я борюсь с вариационной формой на страницах продукта.WooCommerce - выбор вариантов выбора с помощью настраиваемых полей выбора

Хотя FancySelect запускает событие изменения в исходном поле выбора, оно, похоже, ничего не влияет. Если посмотреть на javascript, который используется в форме вариаций, похоже, что они отключили событие изменения в окне выбора и обрабатывают его каким-либо другим способом, вместо этого запуская события на .variations_form. Однако я не могу заставить его работать.

Мой код что-то вдоль линий:

 $('.summary select').fancySelect().on('change.fs', function() { 
      $(this).trigger('change.$'); 
      $('.variations_form').trigger('woocommerce_variation_select_change'); 
     }); 

Я пробовал запуск нескольких событий, но никто, кажется, не имеют никакого влияния.

Любые идеи? Спасибо.

+0

попробуйте это ... проверьте элемент fancyselect в своем браузере. найдите элемент select ... отрегулируйте css с помощью инструментов dev, когда вы его проверяете. сделайте его видимым .. затем попробуйте изменить значение fancyselect .. см., если исходный выбор изменяет значение ... – Reigel

+0

Да, это изменяет значение выбора, но оно не вызывает изменения, которые нужно изменить. Однако, если я вручную изменяю поле фактического выбора, он делает это. Поэтому я думаю, что изменение выбора (возможно, при щелчке) вызывает что-то другое, например '.variations_form'. – evu

+0

попытайтесь вызвать щелчок ... – Reigel

ответ

1

Так получилось, что исходный триггер не работал, по причинам, которые я не могу решить. Однако при запуске события изменения в исходном поле выбора в некоторой степени работал, но он не обновлял элемент «Триггер» fancySelect. Я думаю, это было потому, что исходные параметры select не получили атрибут :selected (по любой причине). Мне пришлось добавить настраиваемое событие в fancySelect, чтобы вручную запустить его метод updateText().

Обновленный код:

$('.summary .options li').on('click', function(){ 
    $('.summary select').trigger('change').trigger('select.fs'); 
}); 

И дополнительное событие для fancySelect (который я буду стараться способствовать, если я получаю шанс):

sel.on('select.fs', function(){ 
    updateTriggerText(); 
}); 

Приветствия.

Смежные вопросы