Выпадающий Список В Доставке
#1
Отправлено 25 Август 2014 - 12:30
Спасибо.
#2
Отправлено 26 Август 2014 - 03:36
http://forum.storela...-зоны-доставки/
#3
Отправлено 26 Август 2014 - 07:12
#5
Отправлено 26 Август 2014 - 08:45
Ирина345 (26 Август 2014 - 07:17) писал:
Из первой инструкции,код на строке 830
Код из 1 инструкции не помог. Не нашел я код из сообщения 6. Как я понял это изменение дало результат.
И мне кажется, что в указанной теме решается немного не мой вопрос, нет?
#6
Отправлено 27 Август 2014 - 02:58
http://forum.storela...вки/#entry83944
#7
Отправлено 27 Август 2014 - 23:11
#8
Отправлено 28 Август 2014 - 01:07
<div class="fieldset"> <h2 class="legend" title="Выберите удобный для вас способ доставки">Cпособ доставки</h2> <table class="orderStageDeliveryListTable basket"> {% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr {% IF order_delivery.first %}class="first"{% ENDIF %}> <td class="cell1" width="5%"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2" width="60%"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> {% IF order_delivery.DESC %} <div class="htmlDataBlock">{order_delivery.DESC}</div> {% ENDIF %} </td> <td class="cell3 price"> <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> {% IFNOT order_delivery.zone_list_empty %} {% FOR zone_list %} <tr class="zones"> <td></td> <td> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label> {% ENDIF %} <input type="radio" class="deliveryZoneRadio" 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 %} {% ENDIF %} </tbody> {% ENDFOR %} </table> </div>замените на:
<div class="orderStageDelivery"> <h3>Выберите удобный для вас способ доставки</h3> <div class="orderInfo"> <table class="orderStageDeliveryListTable"> {% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr> <td class="cell1" rowspan="2"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> </td> <td rowspan="2" class="cell3 num"> + <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> <tr> <td class="cell4">{order_delivery.DESC}</td> </tr> {% IFNOT order_delivery.zone_list_empty %} <tr> <td></td> <td class="cell5"> <select style="margin-left:0;" class="deliveryZoneRadio" data-deliveryid="{order_delivery.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> </td> </tr> {% ENDIF %} </tbody> {% ENDFOR %} </table> </div>
далее в main.js найдите:
// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){перед ним вставьте:
// Смена стоимости доставки при выборе конкретной зоны доставки $('.orderInfo .deliveryZoneRadio').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(); });
#9
Отправлено 28 Август 2014 - 02:04
#10
Отправлено 28 Август 2014 - 20:37
#12
Отправлено 12 Ноябрь 2015 - 11:10
#13
Отправлено 12 Декабрь 2015 - 07:29
{% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr {% IF order_delivery.first %}class="first"{% ENDIF %}> <td class="cell1" rowspan="2"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio inFastOrder" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> </td> <td rowspan="2" class="cell3 pricefield"> <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> <tr> <td class="cell4"><p style="color: #333;">{order_delivery.DESC}</p></td> </tr> {% IFNOT order_delivery.zone_list_empty %} {% 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 %} {% ENDIF %} </tbody> {% ENDFOR %}
замените на:
{% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr> <td class="cell1" rowspan="2"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> </td> <td rowspan="2" class="cell3 num"> + <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> <tr> <td class="cell4">{order_delivery.DESC}</td> </tr> {% IFNOT order_delivery.zone_list_empty %} <tr> <td></td> <td class="cell5"> <select style="margin-left:0;" class="deliveryZoneRadio" data-deliveryid="{order_delivery.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> </td> </tr> {% ENDIF %} </tbody> {% ENDFOR %}
Далее найдите:
// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text()
перед ним вставьте:
// Смена стоимости доставки при выборе конкретной зоны доставки $('.orderInfo .deliveryZoneRadio').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(); });
После данного изменения в быстром заказе поля зоны доставки будут идти выпадающим списком
#14
Отправлено 22 Февраль 2016 - 01:44
Проделал изменения из сообщения #8 для своего пошагового оформления заказа и почти всё получилось.
Теперь все зоны доставки показываются в выпадающем списке.
Есть два момента, которые хотелось бы доработать.
1. После выбора любой из зон доставки (с разной стоимостью или нет) и дальнейшего оформления заказа, в итоге получается, что зона доставки не учитывается в конечном расчёте стоимости доставки. Считается только стоимость, которая прописана для самого способа доставки. Как сделать так, чтобы в созданном заказе в строке "Доставка" прописывались данные (стоимость и само название зоны) из "зоны доставки", а не из способа доставки?
2. Выпадающие списки с зонами на шаге выбора способа доставки, в своём первоначальном виде появляются в чёрном цвете. Иногда просто даже трудно понять, на каком способе доставки стоит кружок radio. Как сделать так, чтобы изначально выпадающие списки с зонами доставки, были серого цвета? И чтобы чёрным цветом отмечался тот выпадающий список, напротив которого стоит точка radio?
Шаблон Сияние.
#15
Отправлено 24 Февраль 2016 - 20:35
#16
Отправлено 28 Февраль 2016 - 20:29
Vaccina (12 Декабрь 2015 - 07:29) писал:
{% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr {% IF order_delivery.first %}class="first"{% ENDIF %}> <td class="cell1" rowspan="2"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio inFastOrder" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> </td> <td rowspan="2" class="cell3 pricefield"> <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> <tr> <td class="cell4"><p style="color: #333;">{order_delivery.DESC}</p></td> </tr> {% IFNOT order_delivery.zone_list_empty %} {% 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 %} {% ENDIF %} </tbody> {% ENDFOR %}
замените на:
{% FOR order_delivery %} <tbody rel="{order_delivery.ID}"> <tr> <td class="cell1" rowspan="2"> <input type="radio" id="deliveryId{order_delivery.ID}" name="form[delivery][id]" value="{order_delivery.ID}" class="required deliveryRadio" {% IFNOT ORDER_FORM_DELIVERY_ID %} {% IF order_delivery.first %} checked="checked" {% ENDIF %} {% ELSEIF order_delivery.ID = ORDER_FORM_DELIVERY_ID %} checked="checked" {% ENDIF %} /> </td> <td class="cell2"> <label for="deliveryId{order_delivery.ID}">{order_delivery.NAME}</label> </td> <td rowspan="2" class="cell3 num"> + <span class="orderStageDeliveryDefaultPrice" {% IF order_delivery.ZONE_ID>0 %}style="display:none;"{% ENDIF%}>{order_delivery.END_PRICE | money_format}</span> <span class="orderStageDeliveryZonePrice" {% IF order_delivery.ZONE_ID<1 %}style="display:none;"{% ENDIF%}>{order_delivery.ZONE_END_PRICE | money_format}</span> </td> </tr> <tr> <td class="cell4">{order_delivery.DESC}</td> </tr> {% IFNOT order_delivery.zone_list_empty %} <tr> <td></td> <td class="cell5"> <select style="margin-left:0;" class="deliveryZoneRadio" data-deliveryid="{order_delivery.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> </td> </tr> {% ENDIF %} </tbody> {% ENDFOR %}
Далее найдите:
// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа $('.deliveryZoneRadio').click(function(){ var id = $(this).attr('deliveryid'), price = $(this).next().find('.num').text()
перед ним вставьте:
// Смена стоимости доставки при выборе конкретной зоны доставки $('.orderInfo .deliveryZoneRadio').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(); });
После данного изменения в быстром заказе поля зоны доставки будут идти выпадающим списком
Помогите пожалуйста)
#17
Отправлено 02 Март 2016 - 11:12
#18
Отправлено 05 Март 2016 - 01:38
#19
Отправлено 05 Март 2016 - 03:53
1. В main.js найдите:
$('.deliveryZoneRadio').click(function()
замените на:
$('.deliveryZoneRadio').change(function()
далее найдите:
$('.deliveryRadio').click(function() { var text = $(this).closest('tbody').find('label').text(); if($(this).is(':checked') && text.indexOf('Самовывоз по адресу') !== -1) { $('#deliveryAddress').val($.trim(text.replace('Самовывоз по адресу', ''))).attr('disabled', 'disabled'); } else { $('#deliveryAddress').val('').removeAttr('disabled'); } });
после него пропишите:
$('.deliveryRadio:checked').trigger('click'); $('.orderStageDeliveryListTable td:not(.cell1, .cell5)').click(function() { $(this).closest('tbody').find('td.cell1 .deliveryRadio').trigger('click'); }); $('.deliveryZoneRadio').change(function(){ var price = $(this).find('option:selected').attr('data-price'); $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price); });2. В main.css добавьте:
select.deliveryZoneRadio { color: #ccc; } select.deliveryZoneRadio:active, select.deliveryZoneRadio:focus { color: #000; }
#20
Отправлено 05 Март 2016 - 04:35
Vaccina (05 Март 2016 - 03:53) писал:
1. В main.js найдите:
$('.deliveryZoneRadio').click(function()
замените на:
$('.deliveryZoneRadio').change(function()
далее найдите:
$('.deliveryRadio').click(function() { var text = $(this).closest('tbody').find('label').text(); if($(this).is(':checked') && text.indexOf('Самовывоз по адресу') !== -1) { $('#deliveryAddress').val($.trim(text.replace('Самовывоз по адресу', ''))).attr('disabled', 'disabled'); } else { $('#deliveryAddress').val('').removeAttr('disabled'); } });
после него пропишите:
$('.deliveryRadio:checked').trigger('click'); $('.orderStageDeliveryListTable td:not(.cell1, .cell5)').click(function() { $(this).closest('tbody').find('td.cell1 .deliveryRadio').trigger('click'); }); $('.deliveryZoneRadio').change(function(){ var price = $(this).find('option:selected').attr('data-price'); $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price); });2. В main.css добавьте:
select.deliveryZoneRadio { color: #ccc; } select.deliveryZoneRadio:active, select.deliveryZoneRadio:focus { color: #000; }
Ничего страшного)
По цвету всё получилось, спасибо!
А вот по стоимости пока нет. Вроде всё сделал по шаблону, но в итоге всё равно стоимость доставки на шаге выбора способа доставки прописывает правильно, а в итоговом заказе оказывается другая (основная для данного способа) цена доставки.
До того, как начал использовать выпадающие списки, а зоны отмечались круглыми кнопками, всё было нормально, цена и информация о "зоне" доставки учитывалась и прописывалась в отдельной графе о доставке.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных