Перейти к содержимому


Выпадающий Список В Доставке


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 27

#21 timavleev

timavleev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений
  • ГородМосква

Отправлено 23 Март 2016 - 15:44

Просмотр сообщения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;
}

Помогите пожалуйста)

#22 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 24 Март 2016 - 05:35

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

В шаблоне Оформление заказа найдите:
<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>

замените на:
<select id="deliveryZoneId{order_delivery.ID}" style="margin-left:0;" class="deliveryZoneRadio" deliveryid="{order_delivery.ID}" 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>

В main.js найдите:
// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
} else {
	 $('.deliveryZoneRadio').attr('rel', 'false');
	 $(this).attr('rel', 'true');
замените на:
// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
} else {
	 $('.deliveryZoneRadio').attr('rel', 'false');
	 $(this).attr('rel', 'true');
	 var zone_opt = parseInt($(this).find('option:selected').val());
	 $(this).attr('data-deliveryid', zone_opt);


#23 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 25 Март 2016 - 01:14

В main.js найдите:
// Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
   
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
 
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа

замените на:
// Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
	$('[name="form[delivery][zone_id]"]').attr('disabled', 'disabled');
   
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
	$(this).closest('tbody').find('[name="form[delivery][zone_id]"]').removeAttr('disabled');
  }).first().trigger('click');
 
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа


#24 timavleev

timavleev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений
  • ГородМосква

Отправлено 25 Март 2016 - 12:45

Просмотр сообщенияVaccina (25 Март 2016 - 01:14) писал:

В main.js найдите:
// Действия при выборе варианта доставки на этапе оформления заказа
$('.deliveryRadio').click(function(){

// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	 $('.deliveryZoneRadio:checked').click().attr('checked', false);
}
});

// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа

замените на:
// Действия при выборе варианта доставки на этапе оформления заказа
$('.deliveryRadio').click(function(){
$('[name="form[delivery][zone_id]"]').attr('disabled', 'disabled');

// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	 $('.deliveryZoneRadio:checked').click().attr('checked', false);
}
$(this).closest('tbody').find('[name="form[delivery][zone_id]"]').removeAttr('disabled');
}).first().trigger('click');

// Действия при выборе зоны внутри варианта доставки на этапе оформления заказа

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

#25 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 26 Март 2016 - 01:09

Почистите кэш вашего браузера, так как теперь передача зон доставки в оформлении заказа работает корректно:
132.jpg

На счет изменения цены при выборе зоны доставки, в шаблоне Оформление заказа:
<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>

замените на:
<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>


#26 timavleev

timavleev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений
  • ГородМосква

Отправлено 26 Март 2016 - 14:30

Просмотр сообщенияVaccina (26 Март 2016 - 01:09) писал:

Почистите кэш вашего браузера, так как теперь передача зон доставки в оформлении заказа работает корректно:
Прикрепленный файл 132.jpg

На счет изменения цены при выборе зоны доставки, в шаблоне Оформление заказа:
<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>

замените на:
<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>

Почистил кэш, да, теперь итоговая сумма и зона доставки на странице "Ваш заказ успешно оформлен" (просмотра заказа) отображается корректно. Спасибо!

Произвёл последние изменения, и теперь, при выборе зоны доставки, в графу стоимость доставки вписывается стоимость первой выбранной зоны. При изменении зоны доставки, стоимость остаётся такой же. Но в итоговом заказе стоимость доставки проставляется правильно (с учётом последующих изменений зоны). Как сделать так, чтобы стоимость доставки, в зависимости от выбранной зоны, менялась интерактивно на этой же странице?

Только там в куске кода, который надо было заменить, в теге select было ещё: id="deliveryZoneId{order_delivery.ID}"

Сообщение отредактировал timavleev: 26 Март 2016 - 20:14


#27 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 29 Март 2016 - 03:34

В шаблоне main.js найдите:
$('.deliveryZoneRadio').change(function(){
				   var price = $(this).find('option:selected').attr('data-price');
				   $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price);
  });

замените на:
$('.deliveryZoneRadio').live("change", function(){
				   var price = $(this).find('option:selected').attr('data-price');
				   $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price);
  });


#28 timavleev

timavleev

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 135 сообщений
  • ГородМосква

Отправлено 31 Март 2016 - 02:44

Просмотр сообщенияVaccina (29 Март 2016 - 03:34) писал:

В шаблоне main.js найдите:
$('.deliveryZoneRadio').change(function(){
				 var price = $(this).find('option:selected').attr('data-price');
				 $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price);
});

замените на:
$('.deliveryZoneRadio').live("change", function(){
				 var price = $(this).find('option:selected').attr('data-price');
				 $(this).closest('tbody').find('.orderStageDeliveryDefaultPrice .num').html(price);
});

Всё получилось. Большое спасибо!)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных