HTMLのinputタグで、数値入力のみを受け付ける属性としてtype=”number”というものがある。

<input type="number" name="" value="">

実はこのタグ、数値のほかにアルファベットの「e」を入力することができてしまう。

理由としては指数表現で「e」を使うケースがあるので、これに対応するために入力を受け付けるようにしているのだ。

ただし、場合によっては「e」を受け付けることで想定外のバグを起こす可能性があるので、今回はこの問題の解決法を紹介する。

「e」の入力を制限する

inputタグに下記のonkeydown属性を追加する。

<input type="number" onkeydown="return event.keyCode !== 69" name="" value="">

コードの意味を解説すると、何らかの入力があった際に入力されたキーコードを取得し、コード69(eを表す)と一致しない場合のみ入力された値を返すというわけだ。

これで「e」の入力を制限することができる。