@valentinadikaya

Как отредактировать скрипт калькулятора?

У меня есть калькулятор.
Стоит задача, чтобы при нажатии на +/- менялось значение в поле input QTY и далее срабатывал скрипт multiply

<section>
 <form action="" method="post">
        <div class="input-group quantity">   
           <input type="button" value="-" class="button-minus" data-field="quantity">
       <input id="skolkometrov" name="QTY" type="number" step="1" max="" value="1" onclick="multiply(this)" >
       <input type="button" value="+" class="button-plus" data-field="quantity">
        <input name="PPRICE" value="1.67"><br>
       <input name="TOTAL" readonly>
       <input name="TOTALMETERS" readonly>
    </div>
</form> 
</section>


function multiply(element) {
        var form = element.form;
        if (element.value==1){
        form.TOTAL.value = Math.floor(element.value * form.PPRICE.value);}
        else{
         form.TOTAL.value = Math.round(element.value * form.PPRICE.value);
        }
        
        form.TOTALMETERS.value = Math.trunc(element.value * form.PPRICE.value);
    }


function incrementValue(e) {
  e.preventDefault();
  var fieldName = $(e.target).data('field');
  var parent = $(e.target).closest('div');
  var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);

  if (!isNaN(currentVal)) {
    parent.find('input[name=' + fieldName + ']').val(currentVal + 1);
  } else {
    parent.find('input[name=' + fieldName + ']').val(0);
  }
}

function decrementValue(e) {
  e.preventDefault();
  var fieldName = $(e.target).data('field');
  var parent = $(e.target).closest('div');
  var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);

  if (!isNaN(currentVal) && currentVal > 0) {
    parent.find('input[name=' + fieldName + ']').val(currentVal - 1);
  } else {
    parent.find('input[name=' + fieldName + ']').val(0);
  }
}

$('.input-group').on('click', '.button-plus', function(e) {
  incrementValue(e);
});

$('.input-group').on('click', '.button-minus', function(e) {
  decrementValue(e);
});
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
Bavashi
@Bavashi
multiply($('#skolkometrov').val());

function multiply(element) {
  var priceValue = $('input[name ="PPRICE"]').val();
  if (element === 1) {
    $('input[name ="TOTAL"]').val(Math.floor(element * priceValue));
  } else {
    $('input[name ="TOTAL"]').val(Math.round(element * priceValue));
  }

  $('input[name ="TOTALMETERS"]').val(Math.trunc(element * priceValue));
}


function incrementValue(e) {
  e.preventDefault();
  var fieldName = $(e.target).data('field');
  var parent = $(e.target).closest('div');
  var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);
  
  if (!isNaN(currentVal)) {
    parent.find('input[name=' + fieldName + ']').val(currentVal + 1);
  } else {
    parent.find('input[name=' + fieldName + ']').val(0);
  }
}

function decrementValue(e) {
  e.preventDefault();
  var fieldName = $(e.target).data('field');
  var parent = $(e.target).closest('div');
  var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);

  if (!isNaN(currentVal) && currentVal > 0) {
    parent.find('input[name=' + fieldName + ']').val(currentVal - 1);
  } else {
    parent.find('input[name=' + fieldName + ']').val(0);
  }
}

$('.input-group').on('click', '.button-plus', function(e) {
  $('#skolkometrov').val(parseInt($('#skolkometrov').val()) + 1);
  let inputValue = $('#skolkometrov').val();
  multiply(inputValue);
});

$('.input-group').on('click', '.button-minus', function(e) {
  $('#skolkometrov').val(parseInt($('#skolkometrov').val()) - 1);
  let inputValue = $('#skolkometrov').val();
  multiply(inputValue);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы