Счетчик Кол-Ва Товара
#201
Отправлено 08 Август 2013 - 06:13
Сделал изменения.
Если возможно, то тогда хотел бы внести как описывал выше в наименование трехзначное цифровое окончание
#202
Отправлено 09 Август 2013 - 04:38
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val(j); } } $(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); }); $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } });
и замените на
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val(j); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); }, 500); });
Это необходимо для того, чтобы при заходе на страницу в поле изначально уже было введено число кратное уп.
Цитата
Вносите, только внесите это так, чтобы эти данные можно было бы идентифицировать, и не перепутать с другими данными. Например (40 шт.) или :40шт.: Соответственно если уп. нет, то подобной записи встречаться в названиях не должно.
#203
Отправлено 09 Август 2013 - 08:57
ещё раз огромное спасибо!
Функции в main.js заменил - после этого потестировал.
Не всё работает:
1) на странице "Товары" пытаюсь изменить кол-во, не важно в большую сторону или меньшую, - вместо числа появляются буквы "NaN"
2а) когда после добавления товара в корзину перехожу в саму корзину - все количества по строкам пересчитываются на "1"
2б) так же в корзине, если уменьшать кол-во стрелочкой "вниз", то оно уменьшается до "-1", причем ноль пропускает. Если вносить вручную, то можно внести любое отрицательное число
3) выявил два товара, у которых количество не меняется кратно упаковки
http://plintus-opt.r.../Ideal-Obvod-12 - меняется кратно 1 (хотя кратность 25)
http://plintus-opt.r.../Ideal-Obvod-34 - меняется кратно 3 (хотя кратность 25)
может быть это из-за того что у меня есть две схожих характеристики "25 штук" и "25 пар" ?
А касательно кратности, чтобы менять в корзине - предлагаю во всех товарах в концовке поля "Название товара" обязательно добавлять значение кратности упаковки - это четырехзначное число в квадратных скобках - например так:
было: "Товар1"
"Товар2"
стало: "Товар1 [0010]"
"Товар2 [0050]"
вот такая головоломка
Соответственно, нужно, чтобы считывались 4 последних символа из наименования без учета квадратных скобок. То есть те символы, которые в квадратных скобках - число будет всегда четырех значное
#204
Отправлено 10 Август 2013 - 03:37
Цитата
2б) так же в корзине, если уменьшать кол-во стрелочкой "вниз", то оно уменьшается до "-1", причем ноль пропускает. Если вносить вручную, то можно внести любое отрицательное число
Для реализации задуманного в корзине - вам необходимо сначала выполнить
Цитата
было: "Товар1"
"Товар2"
стало: "Товар1 [0010]"
"Товар2 [0050]"
вот такая головоломка
Соответственно, нужно, чтобы считывались 4 последних символа из наименования без учета квадратных скобок. То есть те символы, которые в квадратных скобках - число будет всегда четырех значное
Только поле этого можно будет сделать аналогичное изменения кол-во товара уп. для корзины. На данный момент для корзины это не используется. Как выполните изменение названия товара - сообщите нам, мы поможем вам реализовать задуманное уже окончательно.
По остальным вопросам - замените ваш код в main.js
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val(j); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== false) { window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); }, 500); });
на следующий
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val((j <= 0 ? 1 : j)); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); }, 500); });
#205
Отправлено 11 Август 2013 - 21:33
спасибо за подключение к решению моих проблем!
Итак,
- main.js я скорректировал по вашей подсказке.
- наименование товаров привел в вид "Товар1 [0010]", "Товар2 [0050]"
Осталось, чтобы в корзине работало изменение количеств.
А так же, сейчас остается возможность вручную вносить любое количество (и отрицательное и некратное) - как это закрыть?
Точнее сказать, не вообще закрыть поле для внесения кол-ва вручную, а сделать так, чтобы вносить можно было, но после внесения числа, оно округлялось в большую сторону - например:
если у нас "Товар1 [0050]":
вносим "-12" - автоматически ставиться "50"
вносим "0" - тоже "50"
вносим "20" - ставит "50"
вносим "51" - ставит "100"
и так далее
Заранее спасибо!
#206
Отправлено 13 Август 2013 - 02:49
<tr class="order">
и замените на
<tr class="order goodsDataMainModificationId" rel="{cart_items.GOODS_MOD_ID}">
далее замените ваш код в main.js
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val((j <= 0 ? 1 : j)); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); }, 500); });
на следующий код
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { j = window['product_' + $(obj).closest('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val((j <= 0 ? 1 : j)); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); if($('.order .number').length) { $('.order .info .fnt12n').each(function() { var pack = /\[(\d+)\]/.exec($.trim($(this).text())); if($.isArray(pack) && pack[1]) { window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')] = parseInt(pack[1]); } }); } } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); $('.numeric_input').keyup(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } var current = parseInt($(this).find('.text_q').val()); if(current % i && current > i) { i = Math.round(current / i) * i; $(this).find('.text_q').val(i); } else { $(this).find('.text_q').val((current > i) ? current : i); } }); }, 500); });
#207
Отправлено 13 Август 2013 - 07:59
спасибо за помощь - всё сделал как написали, но в корзине теперь ошибка при регулировке количества... при любом изменении количества стрелочками получаем вместо цифр - NaN
#208
Отправлено 14 Август 2013 - 01:52
// добавления начало function addone(obj, i) { var input = $(obj).closest('.numeric_input').find('.text_q'); var j = i; if($('.charactir td.fnt12b').length) { j = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { j = window['product_' + $(obj).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { j = window['product_' + $(obj).closest('.goodsDataMainModificationId').attr('rel')]; } if(j !== i) { i = (i === -1 ? -j : j); } input.val(parseInt(input.val())+i); if(parseInt(input.val()) <= 0) { input.val((j <= 0 ? 1 : j)); } } $(function() { if($('.charactir td.fnt12b').length) { $('.charactir td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $('.goodsDataMainModificationId').val()] = parseInt($(this).next().text()); } }); } if($('.charactir-list td.fnt12b').length) { $('.charactir-list td.fnt12b').each(function() { if($.trim($(this).text()).indexOf('кол-во в упаковке') !== -1) { window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')] = parseInt($(this).next().text()); } }); } if($('.order .number').length) { $('.order .info .fnt12n').each(function() { var pack = /\[(\d+)\]/.exec($.trim($(this).text())); if($.isArray(pack) && pack[1]) { window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')] = parseInt(pack[1]); } }); } }); $(function() { setTimeout(function() { $('.numeric_input').each(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i); }); $('.numeric_input').keyup(function() { var i = 1; if($('.charactir td.fnt12b').length) { i = window['product_' + $('.goodsDataMainModificationId').val()]; } if($('.charactir-list td.fnt12b').length) { i = window['product_' + $(this).closest('.ulproduct').find('.goodsDataMainModificationId').attr('rel')]; } if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } var current = parseInt($(this).find('.text_q').val()); if(current % i && current > i) { i = Math.round(current / i) * i; $(this).find('.text_q').val(i); } else { $(this).find('.text_q').val((current > i) ? current : i); } }); }, 500); });
#209
Отправлено 14 Август 2013 - 15:48
да, действительно опечатка - корзина заработала! Огромное спасибо!
Сейчас ещё раз плотно протестировал все функции магазина "косяков" пости нет.
Единственная проблема, с которой пытался справиться но не смог - у меня на главной выводятся "Хиты продаж", "Новинки" и "Товар дня" - вот как я не пытался что-то исправить, так и не смог решить проблему, хотя всё прописано так же как, например, в "Товарах" - а количества не меняются кратно упаковкам.
А у "Хитов продаж"
кнопка "Купить" добавляет количество не в штуках, а просто цифру отдельную
а кнопка "Подробнее" не работает вообще
#210
Отправлено 15 Август 2013 - 02:07
#211
Отправлено 15 Август 2013 - 07:47
#212
Отправлено 16 Август 2013 - 03:28
#213
Отправлено 16 Август 2013 - 13:20
ещё раз спасибо! Теперь кратность в разделах "Хиты продаж", "Новинки" и "Товар дня" работает!
Но при добавлении товара из раздела "Хиты продаж" товар в корзину не попадает, а на выскакивающем окошке количество выводится в виде числа без "шт" и сумма равна нулю.
Просмотрел весь код - не смог найти ошибку! Помогите пожалуйста.
И ещё один важный момент - у меня в настройках проставлена минимальная сумма заказа и заказ меньшей суммы не оформляется, но это происходит уже в самом конце (после 4го этапа).
Цитата
То есть нужно чтобы в корзине, при НЕнаборе минимальной суммы выводилось такое сообщение
И оформление заказа не работало (+ выскакивало предупреждение, что "сумма заказа ниже минимальной! наберите товар")
#214
Отправлено 17 Август 2013 - 02:42
Цитата
У вас немного не верно вставлен код данной кнопки, именно для блока "Хиты продаж". Найдите в коде блока "Хиты продаж" строки
goods.
и замените на
index_page_favorites_goods.
Цитата
Данный вопрос рассматривался в следующих темах форума
http://forum.storela...аза/#entry39777
http://forum.storela...аза/#entry33753
http://forum.storela...и-за/#entry4859
http://forum.storela...упки/#entry2417
#215
Отправлено 17 Август 2013 - 08:45
спасибо за помощь - с "Хитами" разобрался!
Что касается минимальной суммы заказа, то благодаря ссылкам понял как ставить условия.
Сделал так, чтобы при сумме корзины менее минимальной - выводится красным шрифтом
"Минимальная сумма заказа составляет 5000,00 рублей.
Вам необходимо ещё добавить товара на сумму не менее 4398,00 рублей."
Попозже сделаю, чтобы ещё при этом кнопка "Оформить заказ" была не активна!
Но, обнаружил, что в корзине, при пересчете, когда, например увеличиваешь сумму по строке, чтобы набрать минимальную сумму, сумма пересчитывается, но значение поле "кол-во" возвращается на минимум кратности упаковки.
Как сделать, чтобы в поле "кол-во" оставалась то значение, которое было установлено перед тем, как нажать кнопку "пересчитать" ?
Заранее спасибо за ответ!
#216
Отправлено 20 Август 2013 - 06:31
if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } $(this).find('.text_q').val(i);
и замените на
if($('.order .number').length) { i = window['product_' + $(this).closest('.goodsDataMainModificationId').attr('rel')]; } var current = parseInt($(this).find('.text_q').val()); $(this).find('.text_q').val((current > i && !(current % i)) ? current : i);
#217
Отправлено 20 Август 2013 - 23:01
гранд-мерси!
Теперь всё работает как надо...
Будут ещё доработки, но это уже в рамках другой темы, а с количествами разобрался с вашей помощью - ещё раз спасибо!
#218
Отправлено 31 Август 2013 - 12:29
Разбираюсь с счетчиком количества товара на странице Товар. Вроде все добавила и поле и стрелки, все работает, только не могу в одну строчку выстроить красиво, рядом со словом "Количество". Помогите.
#219
Отправлено 31 Август 2013 - 13:30
Stasi (31 Август 2013 - 12:29) писал:
Разбираюсь с счетчиком количества товара на странице Товар. Вроде все добавила и поле и стрелки, все работает, только не могу в одну строчку выстроить красиво, рядом со словом "Количество". Помогите.
Найдите код в main.css -
.goodsDataMainModificationQuantity { font: italic 12px Verdana, Geneva, sans-serif; margin-top: -20px; margin-bottom: 14px; width: 170px; }и замените на -
.goodsDataMainModificationQuantity { font: italic 12px Verdana, Geneva, sans-serif; margin-bottom: 14px; width: 140px; }
Далее найдите код -
.numeric_input { margin: auto; }и замените на -
.numeric_input { margin: auto; width: 50px; float: right; margin-top: -20px !important; }
Далее найдите код -
.numeric_input div { float: 30px; width: 20px; margin-top: 1px; }и замените на -
.numeric_input div { width: 20px; margin-top: 1px; float: right; }
#220
Отправлено 31 Август 2013 - 14:23
Ещё подскажите пожалуйста, как счетчик товара начать от 1? и возможно ли его ограничить кол-вом наличия?
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных