サンプル
<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 }
)
}
/>
これで入力フォームがフォーカスされている時のマウススクロールが無効化され、数値が入力されません。
以上が解決方法でした。
参考にした記事