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


Изменение Количества В Корзине


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

#21 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 04 Декабрь 2013 - 04:55

Вы добавили код в main.js 3 раза. Удалите 2 повторения. Для кнопок - найдите в файле стилей main.css

.minus, .plus {
  background: #F2F2F2;
  border: 1px solid #DDDDDD;
  border-radius: 4px;
  display: none;
  height: 10px;
  padding: 3px 5px;
  width: 10px;
}

и замените на

.minus, .plus {
  background: #F2F2F2;
  border: 1px solid #DDDDDD;
  border-radius: 4px;
  display: none;
  height: 10px;
  padding: 1px 6px;
  width: 10px;
}


#22 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 04 Декабрь 2013 - 11:29

Просмотр сообщенияСake (04 Декабрь 2013 - 04:55) писал:

Вы добавили код в main.js 3 раза. Удалите 2 повторения. Для кнопок - найдите в файле стилей main.css

.minus, .plus {
background: #F2F2F2;
border: 1px solid #DDDDDD;
border-radius: 4px;
display: none;
height: 10px;
padding: 3px 5px;
width: 10px;
}

и замените на

.minus, .plus {
background: #F2F2F2;
border: 1px solid #DDDDDD;
border-radius: 4px;
display: none;
height: 10px;
padding: 1px 6px;
width: 10px;
}
Код не одинаковый, в одном месте Количество в упаковке, в другом количество пар в упаковке, и количество сумок в упаковке) поэтому был продублирован код 3 раза с этими изменениями)

#23 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 05 Декабрь 2013 - 02:30

Вам необходимо было уточнить данную деталь ранее. Добавив дублирующий код с другим условием не делает сам код разным, это своего рода разновидность дубликата по причине того что события у всех добавленных дубликатов одно и тоже. Вставив дубликат вы создали 3 одинаковых события которые выполняются одновременно. При нажатии стрелки у вас происходит сразу 3 запроса и 3 подсчета из-за чего 8 увеличивается сразу до 32х. Если вам необходимо обработать одно событие но с разными условиями - код примет вид

$(function() {
  $('.cartFormTable .minus').click(function() {
		var product = $(this).closest('tr');
		var product_box = parseInt(product.data('box'));
		if(!product_box) {
		  $.get(product.find('.cell2 a.cartFormTbodyHeader').attr('href'), $.proxy(function(html) {
				 var product = $(this).closest('tr');
				 if($(html).find('.goodsDataFormSubmitButton #quantity_wanted').length) {
						$(html).find('.goodsDataMainDeliveryBlock .goodsDataFeatures td').each(function() {
			  var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
								if($.inArray($.trim($(this).text()), list) !== -1) {
								   product.data('box', parseInt($.trim($(this).next().text())));
								}
						});
						if(parseInt(product.data('box'))) {
						   $(this).trigger('click');
						}
				 }
		  }, this));
		  return(false);
		}
		var input = $(this).parent().find('input');
		var count = parseInt(input.val()) - product_box;
		count = count < product_box ? product_box : count;
		input.val(count);
		input.change();
		return(false);
  });
  $('.cartFormTable .plus').click(function() {
		var product = $(this).closest('tr');
		var product_box = parseInt(product.data('box'));
		if(!product_box) {
		  $.get(product.find('.cell2 a.cartFormTbodyHeader').attr('href'), $.proxy(function(html) {
				 var product = $(this).closest('tr');
				 if($(html).find('.goodsDataFormSubmitButton #quantity_wanted').length) {
						$(html).find('.goodsDataMainDeliveryBlock .goodsDataFeatures td').each(function() {
			  var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
								if($.inArray($.trim($(this).text()), list) !== -1) {
								   product.data('box', parseInt($.trim($(this).next().text())));
								}
						});
						if(parseInt(product.data('box'))) {
						   $(this).trigger('click');
						}
				 }
		  }, this));
		  return(false);
		}
		var input = $(this).parent().find('input');
		input.val(parseInt(input.val()) + product_box);
		input.change();
		return(false);
  });
});


#24 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 06 Декабрь 2013 - 04:00

Просмотр сообщенияСake (05 Декабрь 2013 - 02:30) писал:

Вам необходимо было уточнить данную деталь ранее. Добавив дублирующий код с другим условием не делает сам код разным, это своего рода разновидность дубликата по причине того что события у всех добавленных дубликатов одно и тоже. Вставив дубликат вы создали 3 одинаковых события которые выполняются одновременно. При нажатии стрелки у вас происходит сразу 3 запроса и 3 подсчета из-за чего 8 увеличивается сразу до 32х. Если вам необходимо обработать одно событие но с разными условиями - код примет вид

$(function() {
$('.cartFormTable .minus').click(function() {
	 var product = $(this).closest('tr');
	 var product_box = parseInt(product.data('box'));
	 if(!product_box) {
		 $.get(product.find('.cell2 a.cartFormTbodyHeader').attr('href'), $.proxy(function(html) {
				 var product = $(this).closest('tr');
				 if($(html).find('.goodsDataFormSubmitButton #quantity_wanted').length) {
					 $(html).find('.goodsDataMainDeliveryBlock .goodsDataFeatures td').each(function() {
			 var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
							 if($.inArray($.trim($(this).text()), list) !== -1) {
								 product.data('box', parseInt($.trim($(this).next().text())));
							 }
					 });
					 if(parseInt(product.data('box'))) {
						 $(this).trigger('click');
					 }
				 }
		 }, this));
		 return(false);
	 }
	 var input = $(this).parent().find('input');
	 var count = parseInt(input.val()) - product_box;
	 count = count < product_box ? product_box : count;
	 input.val(count);
	 input.change();
	 return(false);
});
$('.cartFormTable .plus').click(function() {
	 var product = $(this).closest('tr');
	 var product_box = parseInt(product.data('box'));
	 if(!product_box) {
		 $.get(product.find('.cell2 a.cartFormTbodyHeader').attr('href'), $.proxy(function(html) {
				 var product = $(this).closest('tr');
				 if($(html).find('.goodsDataFormSubmitButton #quantity_wanted').length) {
					 $(html).find('.goodsDataMainDeliveryBlock .goodsDataFeatures td').each(function() {
			 var list = ['Количество в упаковке', 'Количество пар в коробке', 'Количество сумок в упаковке'];
							 if($.inArray($.trim($(this).text()), list) !== -1) {
								 product.data('box', parseInt($.trim($(this).next().text())));
							 }
					 });
					 if(parseInt(product.data('box'))) {
						 $(this).trigger('click');
					 }
				 }
		 }, this));
		 return(false);
	 }
	 var input = $(this).parent().find('input');
	 input.val(parseInt(input.val()) + product_box);
	 input.change();
	 return(false);
});
});
Спасибо огромное!) А можно вместо + и - поставить стрелочки вверх и вниз, а то просто выделяет как текст и многим не понятно при наведении на кнопки = и - появляется курсор редактирование текста... или может просто можно сделать так что бы при наведение был курсор как при наводке на обычную кнопку? там рука такая))

#25 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 06 Декабрь 2013 - 05:34

В файле стилей main.css найдите

.minus, .plus {
  background: #F2F2F2;
  border: 1px solid #DDDDDD;
  border-radius: 4px;
  height: 10px;
  padding: 1px 6px;
  width: 10px;
}

и замените на

.minus, .plus {
  background: #F2F2F2;
  border: 1px solid #DDDDDD;
  border-radius: 4px;
  cursor: pointer;
  height: 10px;
  padding: 1px 6px;
  width: 10px;
}


#26 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 06 Декабрь 2013 - 10:30

Просмотр сообщенияСake (06 Декабрь 2013 - 05:34) писал:

В файле стилей main.css найдите

.minus, .plus {
background: #F2F2F2;
border: 1px solid #DDDDDD;
border-radius: 4px;
height: 10px;
padding: 1px 6px;
width: 10px;
}

и замените на

.minus, .plus {
background: #F2F2F2;
border: 1px solid #DDDDDD;
border-radius: 4px;
cursor: pointer;
height: 10px;
padding: 1px 6px;
width: 10px;
}
Спасибо!!)

#27 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 18 Декабрь 2013 - 19:17

А можно ли сделать так что бы при нажатии на + или - стоимость обновлялась автоматически без перезагрузки страницы?

#28 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 19 Декабрь 2013 - 05:25

Найдите в файле main.js код

var input = $(this).parent().find('input');
var count = parseInt(input.val()) - product_box;
count = count < product_box ? product_box : count;
input.val(count);
input.change();
return(false);

и замените его на

var input = $(this).parent().find('input');
var count = parseInt(input.val()) - product_box;
count = count < product_box ? product_box : count;
input.val(count);
input.change();
$.post('/cart', $(this).closest('form').serializeArray(), function(html) {
  $('.cartFormTable').html($(html).find('.cartFormTable').html());
});
return(false);

далее найдите

var input = $(this).parent().find('input');
input.val(parseInt(input.val()) + product_box);
input.change();
return(false);

и замените на

var input = $(this).parent().find('input');
input.val(parseInt(input.val()) + product_box);
input.change();
$.post('/cart', $(this).closest('form').serializeArray(), function(html) {
  $('.cartFormTable').html($(html).find('.cartFormTable').html());
});
return(false);


#29 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 19 Декабрь 2013 - 09:41

работает только на один клик, то есть 1 раз нажал и больше не дает нажимать( и при нажатии уходят стили кнопок(

#30 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 20 Декабрь 2013 - 03:16

В дополнении необходимо изменить события кнопок. Найдите в файле main.js

$('.cartFormTable .minus').click(function() {

и замените на

$('.cartFormTable .minus').live('click', function() {

далее найдите

$('.cartFormTable .plus').click(function() {

и замените на

$('.cartFormTable .plus').live('click', function() {


#31 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 20 Декабрь 2013 - 06:50

Все работает)Спасибо!)

#32 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 23 Декабрь 2013 - 14:24

Все равно сбрасывается стиль кнопок((

#33 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 24 Декабрь 2013 - 03:26

Данная проблема вероятно связана с тем что у вас кнопки выполнены в стили jquery ui button. Для исправления проблемы необходимо повторно вызывать обработчик кнопок после обновления информации на странице. Найдите в файле main.js 2 одинаковых строки

$('.cartFormTable').html($(html).find('.cartFormTable').html());

и замените каждую строку на

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
	$('input:submit, input.button').button();
}


#34 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 24 Декабрь 2013 - 03:35

Просмотр сообщенияСake (24 Декабрь 2013 - 03:26) писал:

Данная проблема вероятно связана с тем что у вас кнопки выполнены в стили jquery ui button. Для исправления проблемы необходимо повторно вызывать обработчик кнопок после обновления информации на странице. Найдите в файле main.js 2 одинаковых строки

$('.cartFormTable').html($(html).find('.cartFormTable').html());

и замените каждую строку на

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('input:submit, input.button').button();
}
проблема исчезла, но появилась посерьезней( стала не активна кнопка оформить заказ...Так что изменения пока отменил, жду помощи)

#35 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 24 Декабрь 2013 - 06:59

Попробуйте следующий код

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('.cartFormTbody input:submit, .cartFormTbody input.button').button();
}


#36 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 24 Декабрь 2013 - 12:30

Просмотр сообщенияСake (24 Декабрь 2013 - 06:59) писал:

Попробуйте следующий код

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('.cartFormTbody input:submit, .cartFormTbody input.button').button();
}
Все тоже самое, уходят стили кнопок и кнопка оформления заказа(

Кнопка оформить заказ не активна почему то!(((( изменения отменил а она все равно не активна... кэш чистил...

#37 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 25 Декабрь 2013 - 03:11

Попробуйте следующий код

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('input:submit, input.button').button();
$('input[name="next_step"]').button({ disabled: false });
}

по идее данный код должен помочь. Проблема была связана с изначальным состоянием кнопки оформления заказа.

#38 borisovd

borisovd

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

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 25 Декабрь 2013 - 03:17

Просмотр сообщенияСake (25 Декабрь 2013 - 03:11) писал:

Попробуйте следующий код

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('input:submit, input.button').button();
$('input[name="next_step"]').button({ disabled: false });
}

по идее данный код должен помочь. Проблема была связана с изначальным состоянием кнопки оформления заказа.
Супер))Все работает!)) Спасибо огромное!)))

Эм...Ошибка есть одна) Если увеличить товар в корзине то перестает работать лупа там же) Помогите пожалуйста решить и эту проблемку)

#39 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 25 Декабрь 2013 - 04:20

Попробуйте тогда следующий код

$('.cartFormTable').html($(html).find('.cartFormTable').html());
if(typeof($('input:submit, input.button').button) == "function" ) {
$('input:submit, input.button').button();
$('input[name="next_step"]').button({ disabled: false });
$('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
}





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

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