LoginSignup
4
1

More than 1 year has passed since last update.

【React】<input type='number'>にマウススクロールでの数値入力を無効にする

Posted at

サンプル

<input type= 'number' />

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

解決策

これを無効にするには、e.preventDefault();だけでは無効にできません。
.addEventListenerの第3引数でpassive: falseが必要になります。
*Chrome上では、デフォルトでtrueになっているそう。
なので、<input>に、フォーカス時にこのpassiveをfalseにさせます。

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

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

参考にした記事

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1