Как разделить 1 значение из поля ввода на 10 другого поля ввода, разделенного на 10 без округления - PullRequest
0 голосов
/ 15 сентября 2018

Я делаю форму для ввода продуктов на склад, поэтому я хочу получить следующее условие:

Когда я набираю и ввожу значение в Поле количества (синий круг), я хочу, чтобы это значение отображалось в списке из 10 палитр полей ввода (красный круг), Но оно имеет быть 69 шт. в каждой коробке ( 69 - это всего лишь то, что фактически умещается на поддоне в реальном складе ), и, если он еще отдыхает, поместите последний остаток в последняя коробка . Вот иллюстрация, которая может помочь:

enter image description here

Скажем, у меня есть 630 шт. предметов, и когда я добавляю 630 в поле количества, это должно быть указано 69 шт. в каждом списке поддонов. 69 до тех пор, пока оно не может быть снова разделено Остальная часть деления должна быть размещена на последнем поле.

Пример:

Количество: 630 шт.

Поддон 1: 69

Поддон 2: 69

Поддон 3: 69

Поддон 4: 69

Поддон 5: 69

Поддон 6: 69

Поддон 7: 69

Поддон 8: 69

Поддон 9: 69

Поддон 10: 9 (Остальные должны быть на последнем поддоне)

Может кто-нибудь мне помочь? Спасибо, Терима Касых.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Требуется операция по модулю и целочисленное деление. Оператор % в JavaScript работает как модуль по положительным числам. Для этой конкретной задачи вам не нужны правильные операции по модулю над отрицательными числами. Целочисленное деление является нормальным делением по этажам. Объект Math предоставляет метод floor.

var
  byId     = document.getElementById.bind(document),
  intVal   = id => parseInt(byId(id).value),
  onChange = ev =>
  {
    let
      qty  = intVal('quantity'),
      ppb  = intVal('peaces-per-box'),
      rest = qty % ppb,
      html = ''
    ;
    if(!qty || !ppb)
      return byId('pallets').innerHTML = '';

    for (var c = Math.floor(qty / ppb), i = 0; i < c; i++)
      html += `<div></div><lable for="pallet-${i}"></lable> <input id="pallet-${i}" value="${ppb}"></div>\n`;
    if(rest)
      html += `<div></div><lable for="pallet-${i}"></lable> <input id="pallet-${i}" value="${rest}"><div></div>\n`;
    byId('pallets').innerHTML = html;
  }
;
byId('quantity'      ).addEventListener('change', onChange);
byId('peaces-per-box').addEventListener('change', onChange);
onChange();
<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title>Quantities</title>

<body>
  <form>
    <div>
      <lable for="quantity">quantity</lable>
      <input id="quantity" type="number" min="0" step="1" placeholder="enter quantity">
    </div>
    <div>
      <lable for="peaces-per-box">peaces per box</lable>
      <input id="peaces-per-box" type="number" min="1" step="1" placeholder="enter max. peaces per box">
      <div id="pallets">
      </div>
    </div>
  </form>
0 голосов
/ 15 сентября 2018
let input = 630
let arr = []
for(let i=0;i<9;i++){
    arr.push(0)
    if(input>=69){
        arr.push(69)
        input-=69
    }
}
arr.push(input)

Не знаю, хотите ли вы этого.

...