[JavaScript] 数字しか入力できないInputを実装する方法

1 min read

仕様

  • 0〜9 までの数値のみを許容する
    入力完了後に文字列を削除
  • ペースト許容しない
  • ドラッグ&ドロップ許容しない

デモ

実装

let input = document.querySelector(".numeric-input");

// disable event function
const disableEvent = (e) => {
  e.preventDefault();
  e.stopPropagation();
};

// disable paste
input.addEventListener("paste", disableEvent);

// disable drag&drop
input.addEventListener("drop", disableEvent);

// remove string
input.addEventListener("keyup", function (e) {
  let tmp = [];

  this.value.split("").forEach(function (item, i) {
    if (item.match(/[0-9]/gi)) {
      tmp.push(item);
    }
  });

  if (tmp.length > 0) {
    this.value = tmp.join("");
  } else {
    this.value = "";
  }
});