Как разделить 1 значение из поля ввода на 10 другого поля ввода, разделенного на 10 без округления

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

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

Скажем, я произвел 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 ответа

Решение

Вы хотите операцию по модулю и целочисленное деление. % Оператор в 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>

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)

Я не знаю, если это то, что вы хотите.

Другие вопросы по тегам