HTMLInputElement: stepUp() メソッド

HTMLInputElement.stepUp() メソッドは、数値型の <input> 要素の値を step 属性の値、または step 属性が明示的に設定されていない場合は既定の step の値だけ増加させるものです。このメソッドを呼び出すと、 value は (step * n) だけ減少します。ここで、n は指定されなかった場合、既定で 1 となり、step が指定されなかった場合、 step の既定値となります。

入力型 既定の step の値 step の宣言の例
date 1 (日) 7 日(1 週間)単位の増加:
<input type="date" min="2019-12-25" step="7">
month 1 (ヶ月) 12 ヶ月(1 年)単位の増加:
<input type="month" min="2019-12" step="12">
week 1 (週間) 2 週間単位の増加:
<input type="week" min="2019-W23" step="2">
time 60 (秒) 900 秒(15 分)単位の増加:
<input type="time" min="09:00" step="900">
datetime-local 1 (日) 同じ曜日:
<input type="datetime-local" min="019-12-25T19:30" step="7">
number 1 0.1 刻み
<input type="number" min="0" step="0.1" max="10">
range 1 2 ずつ増加:
<input type="range" min="0" step="2" max="10">

このメソッドを呼び出すと、フォームコントロール内で設定された制約の範囲内で、 step 属性で指定された値に引数を掛けた値だけ、フォームコントロールの値を変更します。引数が渡されなかった場合の既定値は 1 です。このメソッドは、値が max を上回ったり、 step 属性が設定する制約に違反させるようなことはしません。

stepUp() メソッドを呼び出す前の値が無効であった場合、例えば step 属性で設定した制約に適合しない場合、 stepUp() メソッドを呼び出すと、フォームコントロールの制約に適合する値が返されます。

フォームコントロールが時刻、日付、数値以外のもので、 step 属性に対応していない場合(前述の表に対応する入力型のリストを参照)、または step 値が any に設定されている場合、 InvalidStateError 例外が発生します。

構文

js
stepUp()
stepUp(stepIncrement)

引数

stepIncrement 省略可

数値です。引数が渡されなかった場合、 stepIncrement は既定で 1 になります。

返値

なし (undefined)。

この例のボタンをクリックすると、 number 入力型の値が増加します。

HTML

html
<p>
  <label for="theNumber">
    0 から 400 までの 5 で割り切れる数を入力してください。
  </label>
  <input type="number" step="5" id="theNumber" min="0" max="400" />
</p>
<p>
  <label>増加させたい段階の数を入力するか、空欄のままにしてください。</label>
  <input type="number" step="1" id="incrementInput" min="0" max="25" />
</p>
<input type="button" value="Increment" id="theButton" />

Java10Script

js
/* 関数を呼び出すボタンを生成 */
const button = document.getElementById("theButton");
button.addEventListener("click", () => {
  stepOnUp();
});

function stepOnUp() {
  let input = document.getElementById("theNumber");
  let val = document.getElementById("incrementInput").value;

  if (val) {
    /* 引数付きで加算 */
    input.stepUp(val);
  } else {
    /* 引数なしで加算。 0 を試してください。 */
    input.stepUp();
  }
}

CSS

css
input:invalid {
  border: red solid 3px;
}

結果

stepUp メソッドに引数を渡さなかった場合、既定値は 1 になります。他の値は step 属性の値に乗算されるので、この場合は 5 となります。 stepIncrement に 4 を渡した場合、 stepUp4 * 5 すなわち 20 だけ行われます。この引数が 0 であった場合、数値は加算されません。 stepUp メソッドは入力が範囲外にならないように、この場合は 400 になった時点で停止し、引数として渡された値の小数点以下を切り捨てます。

段階の加算係数を 1.2 に設定してみてください。メソッドを呼び出すとどうなるでしょうか?

値を不正な数値である 4 に設定してみてください。メソッドを呼び出すとどうなるでしょうか?

仕様書

Specification
HTML Standard
# dom-input-stepup-dev

ブラウザーの互換性

BCD tables only load in the browser

関連情報