Проблема с input="number"
Добрый вечер!
На сайта есть страничка заказа(https://polynor.com.ua/order), почему когда в input вписать количество самому, то оно не работает? (Если через (+) или (-), то нормально) Пример кода: Код минуса и плюса: var count = parseInt($input.val()); count--; $input.val(count || 1); $('.minus').click(function () { var $input = $(this).parent().find('input'); var count = parseInt($input.val()); count = count < 1 ? 1 : count; $input.val(count); $input.change(); }); $('.plus').click(function () { var $input = $(this).parent().find('input'); $input.val(parseInt($input.val())); $input.change(); }); Код самого скрипта формы передачи данных: const elMinus = document.querySelectorAll('span.minus'); const elPlus = document.querySelectorAll('span.plus'); const elTotal = document.querySelector('.order-end-form>input'); document.querySelector('.order-table').onclick = function(event) { if (event.target.className === 'minus') { //console.log(event.target); //console.log(event.target.nextElementSibling); if (event.target.nextElementSibling.value <= 0) { event.target.nextElementSibling.value = 0; } else { let val = --event.target.nextElementSibling.value; let price = parseInt(event.target.closest('.number').previousElementSibling.textContent); let sum = val * price; elTotal.value = +elTotal.value - price; console.log(price); console.log(sum); console.log(elTotal.value); } } if (event.target.className === 'plus') { //console.log(event.target); //console.log(event.target.previousElementSibling); let val = ++event.target.previousElementSibling.value; let price = parseInt(event.target.closest('.number').previousElementSibling.textContent); let sum = val * price; elTotal.value = +elTotal.value + price; console.log(price); console.log(sum); console.log(elTotal.value); } } |
Denis_Landar,
выкиньте пожалуйста ваши скрипты(оба) и замените на это $(function() { var table = $(".order-table"), div = table.find(".number"), input = div.find("input").get(), total = $(".order-end-form>input:text"); function sum() { var n = input.reduce(function(s, el) { var val = +el.value || 0, price = +el.dataset.price || 0; val < 0 && (val = 0); return s + val * price }, 0); total.val(n) } div.each(function(indx, el) { var price = parseInt($(el).prev().text()), input = $("input", el).on({ input: sum })[0]; input.dataset.price = price; $(el).on("click", ".minus,.plus", function(event) { val = +input.value || 0; $(event.target).is(".minus") ? val-- : val++; val < 0 && (val = 0); input.value = val; sum() }) }) }); Цитата:
|
рони, Спасибо!
|
Часовой пояс GMT +3, время: 09:39. |