Умножение выбора селекта и данных из инпута

508
13 января 2017, 07:45

Ребята, подскажите пожалуйста как реализовать такую вещь, есть 1 селект и 1 инпут туда number, при выборе чего то из селекта и ввода числа в инпут, напр.при выборе банана происходит умножение цены банана на количество, а результат выводится чуть ниже

<form> 
  <select> 
    <option value="Banan">Банан</option> 
    <option value="Apple">Яблоко</option> 
    <option value="Pear">Груша</option> 
    <option value="Grapes">Виноград</option> 
  </select> 
 
  <input type="number" value="amount" min="1" max="50" step="1" placeholder="Укажите предположительное количество (кг)"> 
</form> 
<div>Здесь результат умножения</div>

Answer 1

Чтобы не расстраивать учительницу математики и не умножать килограммы на бананы, надо все-таки добавить цену к каждой опции, а затем уже умножать.

var fruit = document.getElementById('fruit'), 
  weight = document.getElementById('weight'), 
  result = document.getElementById('result'); 
 
fruit.addEventListener('change', function() { 
  listener(fruit); 
}); 
 
weight.addEventListener('change', function() { 
  listener(fruit); 
}); 
 
function listener(elem) { 
  var price = elem.querySelector(':checked').getAttribute('data-price'), 
    kg = weight.value; 
 
  result.innerHTML = multiply(price, kg); 
} 
 
function multiply(a, b) { 
  return a * b; 
}
<form> 
  <select id="fruit"> 
    <option value="Banan" data-price="100" selected>Банан</option> 
    <option value="Apple" data-price="150">Яблоко</option> 
    <option value="Pear" data-price="200">Груша</option> 
    <option value="Grapes" data-price="250">Виноград</option> 
  </select> 
 
  <input id="weight" type="number" value="amount" min="1" max="50" step="1" placeholder="Укажите предположительное количество (кг)"> 
</form> 
<div id="result">Здесь результат умножения</div>

Answer 2

function mkChange(item) { 
  var kg = document.getElementById('kg').value; 
  document.getElementById('total').innerHTML = item.value * kg; 
}; 
 
function mkChange1(item) { 
  var select = document.getElementById("mk"); 
  var fruct = select.options[select.selectedIndex].value; 
  document.getElementById('total').innerHTML = item.value * fruct; 
};
<form> 
  <select id="mk" onchange="mkChange(this);"> 
    <option value="10">Банан - 10p</option> 
    <option value="20">Яблоко - 20p</option> 
    <option value="30">Груша - 30p</option> 
    <option value="40">Виноград - 40p</option> 
  </select> 
 
  <input type="number" id="kg" value="0" min="1" max="50" step="1" placeholder="Укажите предположительное количество (кг)" onkeyup="mkChange1(this);" onchange="mkChange1(this);"> 
</form> 
<div>Здесь результат умножения: --- <span id="total">00</span>p</div>

Answer 3

calculate = function() { 
  var e = document.getElementsByTagName("select")[0]; 
  var price = e.options[e.selectedIndex].attributes['data-price'].value; 
  var amount = document.getElementsByTagName("input")[0].value; 
  var fullprice = parseInt(price) * parseInt(amount); 
  document.getElementById("results").innerText = fullprice; 
}
<form> 
  <select onchange=calculate()> 
    <option value="Banan" data-price="2">Банан</option> 
    <option value="Apple" data-price="3">Яблоко</option> 
    <option value="Pear" data-price="4">Груша</option> 
    <option value="Grapes" data-price="5">Виноград</option> 
  </select> 
 
  <input onchange=calculate() type="number" value="amount" min="1" max="50" step="1" placeholder="Укажите предположительное количество (кг)"> 
</form> 
<div id="results">Здесь результат умножения</div>

READ ALSO
Начать работу верстальщика [требует правки]

Начать работу верстальщика [требует правки]

Подскажите, что нужно знать, для того чтобы начать работать (заработать на хлеб) верстальщиком? 1) Имеется ввиду, какие технологии и тому подобное2)...

373
XSLT--&gt;JavaScript/Python--&gt;HTML

XSLT-->JavaScript/Python-->HTML

Здравствуйте

337
При нажатии не открываю блоки

При нажатии не открываю блоки

Здравствуйте! Написал две функции появления и исчезновения блоков, но они почему-то не открываютсяПри клике просто ничего не происходит

351