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
# dom-input-stepup-dev

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
stepUp

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support

関連情報