Компактный Список Способов Доставки
#1
Отправлено 30 Сентябрь 2014 - 13:01
Сейчас при оформлении заказа раскрывается весь список способов доставки вместе с подпунктами (Зонами доставки).
См изображение
Обратите внимание, что там ещё километр прокрутки.
Подскажите, что и где изменить, чтобы подпункты раскрывались либо только при выборе вышестоящего пункта, либо в раскрывающемся списке? Это не принципиально.
Т.е. чтобы Московские Пункты выдачи отображались только при выборе Москвы.
Тот вариант, которые есть сейчас отпугнёт кого угодно. И уж точно не похож на быстрый заказ.
Спасибо!
#2
Отправлено 30 Сентябрь 2014 - 15:25
keadis (30 Сентябрь 2014 - 13:01) писал:
Сейчас при оформлении заказа раскрывается весь список способов доставки вместе с подпунктами (Зонами доставки).
См изображение
Доставка.jpg
Обратите внимание, что там ещё километр прокрутки.
Подскажите, что и где изменить, чтобы подпункты раскрывались либо только при выборе вышестоящего пункта, либо в раскрывающемся списке? Это не принципиально.
Т.е. чтобы Московские Пункты выдачи отображались только при выборе Москвы.
Тот вариант, которые есть сейчас отпугнёт кого угодно. И уж точно не похож на быстрый заказ.
Спасибо!
http://forum.storela...-зоны-доставки/
http://forum.storela...сок-в-доставке/
#3
Отправлено 02 Октябрь 2014 - 17:40
Ирина345 (30 Сентябрь 2014 - 15:25) писал:
http://forum.storela...-зоны-доставки/
http://forum.storela...сок-в-доставке/
Ну или не подставляется в место основного способа.
Прошу протестировать: posterof.ru. Только добавьте в корзину недорогой товар, чтобы видеть изменение цены при смене способа, а то для большинства Зон стоит правило "0 руб при заказе свыше 5000р.".
Я предполагаю, всё же, что шаблон "Оформление заказа" в новой теме "Хамелеон" изменён и к нему в полной мере не подходят инструкции из предыдущих тем.
И файл main.js не содержит тех блоков, о которых говорилось в указанных вами инструкциях. Но в любом случае я вставил везде, где требуется нужные блоки.
Спасибо.
#4
Отправлено 05 Октябрь 2014 - 14:12
keadis (02 Октябрь 2014 - 17:40) писал:
Ну или не подставляется в место основного способа.
Прошу протестировать: posterof.ru. Только добавьте в корзину недорогой товар, чтобы видеть изменение цены при смене способа, а то для большинства Зон стоит правило "0 руб при заказе свыше 5000р.".
Я предполагаю, всё же, что шаблон "Оформление заказа" в новой теме "Хамелеон" изменён и к нему в полной мере не подходят инструкции из предыдущих тем.
И файл main.js не содержит тех блоков, о которых говорилось в указанных вами инструкциях. Но в любом случае я вставил везде, где требуется нужные блоки.
Спасибо.
#5
Отправлено 05 Октябрь 2014 - 14:49
Ирина345 (05 Октябрь 2014 - 14:12) писал:
В файл main.js вставил код
$(function() { if($('.deliveryRadio').length) { $('.deliveryRadio:checked').closest('form').submit(function() { var tbody = $('.deliveryRadio:checked').closest('tbody'); if(!tbody.find('select').length || parseInt(tbody.find('select').val())) { return(true); } alert('Пожалуйста, выберите зону доставки'); return(false); }); } }); // Смена стоимости доставки при выборе конкретной зоны доставки $('.orderInfo select').change(function(){ var value = $(this).find('option:selected').attr('data-price'); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value); // Установка шарика на пункт зоны доставки $('#deliveryId' + $(this).attr('data-deliveryid')).click(); });
Хочу обратить внимание, что в файле main.js не было строк кода
// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){
А в шаблоне "Оформление заказа" выполнил инструкцию из сообщения в рекомендуемой вами теме форума
#6
Отправлено 14 Октябрь 2014 - 00:19
Зоны доставки с выпадающими списками появились, но стоимость не меняется при выборе разных зон.
Я повторюсь.
1) Выполнил подряд инструкции из сообщения Ссылка 1
Здесь есть нюанс: в теме "Хамелон" для шаблона "Оформление заказа" указанный в данной инструкции блок кода не совсем подходит. При замене кода из этой инструкции вылезает сообщение "Ошибка компиляции шаблона. Не закрытый тег «IF» строка 22". Для того, чтобы в дальнейшем продолжать выполнение инструкций я методом тыка вставил {% ENDIF %} в строку 92.
2) Затем выполнил инструкцию Ссылка 2
Всё это делалось пока только в шаблоне "Оформление заказа" (т.е. не
Но и для быстрого заказа это тоже необходимо. Можно ли как-то выложить единую цепочку инструкций (пусть даже ссылками на разные ветки форума), но чтобы и для "Быстрого заказа" решить данный вопрос?
#7
Отправлено 14 Октябрь 2014 - 05:13
$(function(){ $('.goods-cat-image-medium-square').click(function(){ uri = $(this).find('a').attr('href'); document.location.href = uri }) }) // Действия при выборе варианта доставки на этапе оформления заказа $('.deliveryRadio').click(function(){ // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) { $('.deliveryZoneRadio:checked').click().attr('checked', false); } }); // Смена стоимости доставки при выборе конкретной зоны доставки $('.deliveryZoneRadio').change(function(){ var value = $(this).find('option:selected').attr('data-price'); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); // Установка шарика на пункт зоны доставки $('#deliveryId' + $(this).attr('data-deliveryid')).click(); // ставим куки setCookie('delivery_zone_id', $(this).find('option:selected').attr('value')); }); // Если есть куки if(getCookie('delivery_zone_id')){ // находим значение варианта оплаты по куки файлу // устанавливаем в селект поле нужный пункт // выполняем JS действие при изменении поля варианта оплаты $('.orderInfo select > option[value="' + getCookie('delivery_zone_id') + '"]').parent().val(getCookie('delivery_zone_id')).change(); }
и замените его на
$(function(){ $('.goods-cat-image-medium-square').click(function(){ uri = $(this).find('a').attr('href'); document.location.href = uri }) // Действия при выборе варианта доставки на этапе оформления заказа $('.deliveryRadio').click(function(){ // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) { $('.deliveryZoneRadio:checked').click().attr('checked', false); } }); // Смена стоимости доставки при выборе конкретной зоны доставки $('.deliveryZoneRadio').change(function(){ var value = $(this).find('option:selected').attr('data-price'); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); // Установка шарика на пункт зоны доставки $('#deliveryId' + $(this).attr('data-deliveryid')).click(); // ставим куки setCookie('delivery_zone_id', $(this).find('option:selected').attr('value')); }); // Если есть куки if(getCookie('delivery_zone_id')){ // находим значение варианта оплаты по куки файлу // устанавливаем в селект поле нужный пункт // выполняем JS действие при изменении поля варианта оплаты $('.orderInfo select > option[value="' + getCookie('delivery_zone_id') + '"]').parent().val(getCookie('delivery_zone_id')).change(); } });
По сути необходимо было перенести "});" немного ниже, тем самым обхватив весь код в "$(function(){".
Аналогичная ситуация и в шаблоне "Быстрый заказ". Найдите код
$(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) });
и замените его на
$(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) }); });
#8
Отправлено 14 Октябрь 2014 - 11:01
#9
Отправлено 15 Октябрь 2014 - 23:57
Сake (14 Октябрь 2014 - 05:13) писал:
$(function(){ $('.goods-cat-image-medium-square').click(function(){ uri = $(this).find('a').attr('href'); document.location.href = uri }) }) // Действия при выборе варианта доставки на этапе оформления заказа $('.deliveryRadio').click(function(){ // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) { $('.deliveryZoneRadio:checked').click().attr('checked', false); } }); // Смена стоимости доставки при выборе конкретной зоны доставки $('.deliveryZoneRadio').change(function(){ var value = $(this).find('option:selected').attr('data-price'); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); // Установка шарика на пункт зоны доставки $('#deliveryId' + $(this).attr('data-deliveryid')).click(); // ставим куки setCookie('delivery_zone_id', $(this).find('option:selected').attr('value')); }); // Если есть куки if(getCookie('delivery_zone_id')){ // находим значение варианта оплаты по куки файлу // устанавливаем в селект поле нужный пункт // выполняем JS действие при изменении поля варианта оплаты $('.orderInfo select > option[value="' + getCookie('delivery_zone_id') + '"]').parent().val(getCookie('delivery_zone_id')).change(); }
и замените его на
$(function(){ $('.goods-cat-image-medium-square').click(function(){ uri = $(this).find('a').attr('href'); document.location.href = uri }) // Действия при выборе варианта доставки на этапе оформления заказа $('.deliveryRadio').click(function(){ // Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) { $('.deliveryZoneRadio:checked').click().attr('checked', false); } }); // Смена стоимости доставки при выборе конкретной зоны доставки $('.deliveryZoneRadio').change(function(){ var value = $(this).find('option:selected').attr('data-price'); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); // Установка шарика на пункт зоны доставки $('#deliveryId' + $(this).attr('data-deliveryid')).click(); // ставим куки setCookie('delivery_zone_id', $(this).find('option:selected').attr('value')); }); // Если есть куки if(getCookie('delivery_zone_id')){ // находим значение варианта оплаты по куки файлу // устанавливаем в селект поле нужный пункт // выполняем JS действие при изменении поля варианта оплаты $('.orderInfo select > option[value="' + getCookie('delivery_zone_id') + '"]').parent().val(getCookie('delivery_zone_id')).change(); } });
По сути необходимо было перенести "});" немного ниже, тем самым обхватив весь код в "$(function(){".
Аналогичная ситуация и в шаблоне "Быстрый заказ". Найдите код
$(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) });
и замените его на
$(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) }); });
Для шаблона "Оформление заказа" всё сработало! Спасибо!
А для "Быстрого заказа" - не совсем понятно. Код сменил, но
сейчас отображается раскрытый список с "radio", вместо "select". Работает корректно, но нужны "selectы" для зон доставки.
В предыдущих инструкциях на форуме сказано, что "....нужно выполнить те же инструкции, только для шаблона "Быстрый заказ". И вместо правок в файле main.js всё править в "Быстром заказе". Но как сделать - я не могу понять. Они совершенно разные эти два шаблона.
Буду благодарен!
#10
Отправлено 16 Октябрь 2014 - 01:10
{% FOR zone_list %} <tr class="zones incart"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </td> <td></td> </tr> {% ENDFOR %}
и замените его на
{% FOR zone_list %} <tr class="zones incart"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <select class="deliveryZoneRadio inFastOrder" data-deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}> <option value="0" data-price="{order_delivery.END_PRICE | number_format("0", ",", " ")}"> - выберите зону доставки - </option> {% FOR zone_list %} <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}> {order_delivery.zone_list.NAME} </option> {%ENDFOR%} </select> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </td> <td></td> </tr> {% ENDFOR %}
#11
Отправлено 16 Октябрь 2014 - 02:01
Сake (16 Октябрь 2014 - 01:10) писал:
{% FOR zone_list %} <tr class="zones incart"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </td> <td></td> </tr> {% ENDFOR %}
и замените его на
{% FOR zone_list %} <tr class="zones incart"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <select class="deliveryZoneRadio inFastOrder" data-deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}> <option value="0" data-price="{order_delivery.END_PRICE | number_format("0", ",", " ")}"> - выберите зону доставки - </option> {% FOR zone_list %} <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}> {order_delivery.zone_list.NAME} </option> {%ENDFOR%} </select> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}" style="color: #333;"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice" style="color: #333;">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </td> <td></td> </tr> {% ENDFOR %}
Сделал! Результат на фото.
В "Select"ах нет зон доставки
#12
Отправлено 16 Октябрь 2014 - 02:58
<tr class="zones incart"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> <select class="deliveryZoneRadio inFastOrder" data-deliveryid="{order_delivery.ID}" name="form[delivery][zone_id]"> <option value="0" data-price="{order_delivery.END_PRICE | number_format("0", ",", " ")}"> - выберите зону доставки - </option> {% FOR zone_list %} <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}> {order_delivery.zone_list.NAME} {order_delivery.zone_list.END_PRICE | money_format} </option> {%ENDFOR%} </select> <label class="orderStageDeliveryZoneLabel" style="color: #333;"> <span class="deliveryZonePrice" style="color: #333;"></span> </label> </td> <td></td> </tr>
После этого изменения выпадающий список должен будет прийти в норму.
#13
Отправлено 16 Октябрь 2014 - 11:13
Сake (16 Октябрь 2014 - 02:58) писал:
Зоны доставки - выберите зону доставки -{% FOR zone_list %}{order_delivery.zone_list.NAME} {order_delivery.zone_list.END_PRICE | money_format}{%ENDFOR%}После этого изменения выпадающий список должен будет прийти в норму.
1) Теперь зоны в 'Select'ах появились, но не меняется стоимость при выборе зоны.
2) А у первого пункта (т.е. у Москвы) вообще стоимость не отображается.
3) И как сделать, чтобы как в шаблоне обычного "Оформления заказа" "Select" для каждого способа активировался только тогда, когда стоит "radio" напротив нужного способа?
А то сейчас можно даже не выбрав "Способ" начать выбирать "Зону доставки", а переключатель при этом автоматом не ставится напротив Способа.
В шаблоне "Оформление заказа" нельзя выбрать "Зону" без выбора "Способа".
Спасибо.
#14
Отправлено 17 Октябрь 2014 - 04:50
$(function(){ sd = $($('.deliveryRadio')[0]); id = sd.val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); sd.prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); oldPrice.text(price); } }) $(function(){ $('.deliveryRadio').each(function(){ var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) $(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) });
и замените его на
$(function () { $('.deliveryRadio').click(function () { $('.deliveryZoneRadio').attr('disabled', 'disabled') .closest('tbody').find('.deliveryRadio:checked') .closest('tbody').find('.deliveryZoneRadio').removeAttr('disabled'); }).filter(':checked').trigger('click'); $('.deliveryZoneRadio').change(function() { var option = $(this).children('option:selected'); var tbody = $(this).closest('tbody'); if (!parseInt(option.val())) { tbody.find('.orderStageDeliveryDefaultPrice').show() .next('.orderStageDeliveryZonePrice').hide(); } else { tbody.find('.orderStageDeliveryDefaultPrice').hide() .next('.orderStageDeliveryZonePrice').show() .find('.num').text(option.attr('data-price')); } }).filter(':selected').trigger('click'); });
#15
Отправлено 17 Октябрь 2014 - 08:59
Сake (17 Октябрь 2014 - 04:50) писал:
$(function(){ sd = $($('.deliveryRadio')[0]); id = sd.val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); sd.prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); oldPrice.text(price); } }) $(function(){ $('.deliveryRadio').each(function(){ var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) $(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) });
и замените его на
$(function () { $('.deliveryRadio').click(function () { $('.deliveryZoneRadio').attr('disabled', 'disabled') .closest('tbody').find('.deliveryRadio:checked') .closest('tbody').find('.deliveryZoneRadio').removeAttr('disabled'); }).filter(':checked').trigger('click'); $('.deliveryZoneRadio').change(function() { var option = $(this).children('option:selected'); var tbody = $(this).closest('tbody'); if (!parseInt(option.val())) { tbody.find('.orderStageDeliveryDefaultPrice').show() .next('.orderStageDeliveryZonePrice').hide(); } else { tbody.find('.orderStageDeliveryDefaultPrice').hide() .next('.orderStageDeliveryZonePrice').show() .find('.num').text(option.attr('data-price')); } }).filter(':selected').trigger('click'); });
Если делать в точности, как указано - выдаёт JS ошибку в 123 строке после нажатия кнопки купить из каталога.
Я также обратил внимание, что, видимо, из-за того, что у меня слишком много зон доставки - форма Быстрого заказа после нажатия кнопки "Купить" загружается иногда по 5-7 секунд.
В связи с этим скажите, как вернуться к старому методу - без "Быстрого заказа". Т.е. чтобы после нажатия кнопки "Купить" их любого места на сайте сразу же чтобы появлялось окно "Товар добавлен в корзину" и с двумя кнопками "Перейти в Корзину" и "Продолжить покупки"? Чтобы не подгружались зоны.
С быстрым заказом я намучаюсь с таким количеством зон. Плюс на планшетах и смартфонах всё это выглядит оочень награмождённо и тяжело.
Спасибо!
#16
Отправлено 17 Октябрь 2014 - 23:46
$(function(){ sd = $($('.deliveryRadio')[0]); id = sd.val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); sd.prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); oldPrice.text(price); } }) $(function(){ $('.deliveryRadio').each(function(){ var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) $(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) }); });
Предложенный код для замены скорее всего не будет работать корректно без изменения на странице пошагового оформления заказа.
#17
Отправлено 19 Октябрь 2014 - 12:42
Сake (17 Октябрь 2014 - 23:46) писал:
$(function(){ sd = $($('.deliveryRadio')[0]); id = sd.val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); sd.prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); oldPrice.text(price); } }) $(function(){ $('.deliveryRadio').each(function(){ var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) }) $(function(){ $('.orderStageDeliveryListTable').on('change','.deliveryRadio',function(){ $('.deliveryRadio,.deliveryZoneRadio').each(function(){ $(this).removeAttr('checked'); }) var id = $(this).val() ,fz = $($('.deliveryZoneRadio[deliveryid='+id+']')[0]); $(this).prop('checked',true); fz.prop('checked',true); if($('.zones').length){ price = fz.next().find('.num').text(); oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } } }) // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text() ,oldPrice = $('tbody[rel='+ id +']').find('.pricefield').find('.num'); if(price != ''){ oldPrice.text(price); } $('.deliveryRadio').each(function(){ $(this).removeAttr('checked'); if($(this).val() == id){ $(this).prop('checked',true); }else{ $(this).removeAttr('checked'); } }) }); });
Предложенный код для замены скорее всего не будет работать корректно без изменения на странице пошагового оформления заказа.
Последний вариант просто подвешивает страницу с затемнением фона. Т.е. буд-то не может вывести табличку "Товар успешно добавлен...."
Я повторюсь,
"......скажите, как вернуться к старому методу - без "Быстрого заказа"? Т.е. чтобы после нажатия кнопки "Купить" из любого места на сайте сразу же появлялось окно "Товар добавлен в корзину" с двумя кнопками "Перейти в Корзину" и "Продолжить покупки"? Чтобы не подгружались зоны.
С быстрым заказом я намучаюсь с таким количеством зон. Плюс на планшетах и смартфонах всё это выглядит оочень награмождённо и тяжело..."
Спасибо!
#18
Отправлено 21 Октябрь 2014 - 05:00
formData.push({name: 'fast_order', value: 1});
и замените её на
// formData.push({name: 'fast_order', value: 1});
#19
Отправлено 22 Октябрь 2014 - 00:58
Сake (21 Октябрь 2014 - 05:00) писал:
formData.push({name: 'fast_order', value: 1});
и замените её на
// formData.push({name: 'fast_order', value: 1});
Отлично! Но при нажатии "Продолжить покупки" ничего не происходит. Как это исправить? Чтобы окно закрывалось....
#20
Отправлено 22 Октябрь 2014 - 02:10
<script> $('#cartSum').html($('.newCartSum').html()); $('#cartCount').html($('.newCartCount').html()); </script>
и замените его на
<script> $('#cartSum').html($('.newCartSum').html()); $('#cartCount').html($('.newCartCount').html()); $(function() { $('.nyroModalClose').click(function() { $('.fancybox-close').trigger('click'); }); }); </script>
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных