Добрый день. Ох были у меня мучения на этот счет Сразу скажу что на изящество решение не тянет, и как кастомизировать не скажу, вся собака зарыта в том как битрикс вешает сабытия на эти селекты: /bitrix/js/main/core/core.js строка 788 функция BX.bind = function(el, evname, func) Было
Код
if (el.addEventListener) {
el.addEventListener(evname, func, false);
}
Стало
Код
if (el.addEventListener) {
if (evname == 'change' && window.jQuery) {
jQuery(el).bind(evname, func);
}
else {
el.addEventListener(evname, func, false);
}
}
И соответственно надо симулировать не click а change. Ниже мой код. Может поможет. Он при выборе первого селекта автоматом заменяет все последующие в которых выбора нет (один вариант), на текст. А сами селекты скрывает выбирая этот единственный вариант.
Код
$(document).ready(function(){
$('#sku_selectors_list select').live('change',function(){
id = $(this).attr('id');
last = $('#sku_selectors_list select:enabled').last();
if ($(last).attr('id') != id) {
if ($(last).find('option').size() == 2) {
$(last).find('option:last').attr('selected','selected');
$(last).css('display','none');
$(last).parent().append($(last).find('option:last').text());
$(last).change();
}
}
});
});
Иногда все гениальное просто. Почему до сих пор этот момент не поправили не знаю, но решение по сути, в одну строчку. 1. Кастомизируем компонент (Кастомизация компонентов) который проводит операцию по переносу товара в корзину. Обычно это карточка товара bitrix/components/bitrix/catalog.element/component.php и/или список элементов bitrix/components/bitrix/catalog.section/component.php Помните, что если вы не кастомизируете компонент, то после обновления ваши правки могут быть удалены(!) 2. Найдите кусок кода который отвечает за проверку соответствия тех параметров что в настройках, и тех что пришли из формы, при нажатии на "купить":
Она подменяет список требуемых свойств на те что пришли из формы после нажатия на "Купить" Теперь если какое-то свойство у товара не заполнено, например "Цвет" имеет выбор, а "Размер" для данного товара не указан, то это не помешает пользователю выбрать только цвет и купить с ним. Естественно есть проблема безопасности, так как список свойств берется не из настроек компонента а из формы, т.е. потенциально со стороны клиента. Но этого можно избежать если немного повозиться со строчкой в п.3. В $arParams["PRODUCT_PROPERTIES"] находится максимально разрешенный набор свойств для товара, а в нем надо оставить только те из них что есть в $_POST[$arParams["PRODUCT_PROPS_VARIABLE"]]. Тогда решение будет немного длиннее, но абсолютно безопасным для вашего сайта.
4. Маленький тюнинг шаблона что бы не выводить select-ом свойства у которых только одно значение Находим в шаблоне (карточки товара или списка элементов раздела)