Проблема с 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, время: 20:14. |