Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2017, 01:17
Интересующийся
Отправить личное сообщение для Denis_Landar Посмотреть профиль Найти все сообщения от Denis_Landar
 
Регистрация: 10.10.2017
Сообщений: 26

Проблема с 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);
      }
    }
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2017, 02:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

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()
        })
    })
});

Сообщение от рони
сумму надо формировать обходя все инпуты, только суммируя, без какого либо вычитания !
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2017, 19:04
Интересующийся
Отправить личное сообщение для Denis_Landar Посмотреть профиль Найти все сообщения от Denis_Landar
 
Регистрация: 10.10.2017
Сообщений: 26

рони, Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
Проблема с дизайном после отправки xmlhttprequest, Проблема с дизайном после отправки cyberx AJAX и COMET 3 01.05.2010 17:07
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47