その他

【Javascript】< input type=’number’ / > に対してマウスホイールでの入力を無効にする

この記事は約2分で読めます。
<input type = 'number' />

といった数値入力のinput要素に対して、画面上でフォーカスし、マウスをスクロールすると数値入力されてしまう場合があります。

今回はこのマウスホイールでの数値入力を無効化していきたいと思います。

解決策

input 要素の onFocus の event を使います。

<input 
  type= 'number' 
  onFocus={(e) =>
          e.target.addEventListener(
            'wheel',
            (e) => {
              e.preventDefault();
            },
            { passive: false }
          )
        }
/>

e.preventDefault();だけでは無効にできません。.addEventListenerの第3引数でpassive: falseが必要になります。

chrome上では、デフォルトで true になっているそう。なので、<input>に、フォーカス時にこのpassiveをfalseにさせます。

これで入力フォームがフォーカスされている時のマウススクロールが無効化され、数値が入力されません。

参考資料

https://blog.myntinc.com/2019/10/javascript-3.html

https://qiita.com/kyntk/items/5c16846a9b0e0b36154c