LoginSignup
0
1

More than 1 year has passed since last update.

ブラウザ毎に非テキスト入力なinput要素のイベントハンドラの挙動について調べてみた

Last updated at Posted at 2023-03-31

onBlurでバリデーションの発火させたいときってありますよね?
ブラウザ毎に非テキスト入力なinput要素のイベントハンドラの挙動について調べてみました。
ブラウザ対応で沼の気配を感じて調査したときの記録です。

環境

HTMLの要素
ブラウザ バーション OS
Google Chrome 111.0.5563.147 (Official Build) (64 ビット) Windows
Firefox 111.0.1 Windows
Macintosh Safari バージョン16.3 (18614.4.6.1.6) MacOS Ventura 13.2.1
iPadOS Safari iPadOS 16.4 20E246
Android Chrome 111.0.5563.116 Pixel 6a Android 13

やりかた

適当なStorybookを作ってそこで実験しました

export const Test = () => {
	const onBlurHandler = () => {
		alert('onBlur');
	};

	const onChangeHandler = () => {
		alert('onChange');
	};

	return (
		<>
			<fieldset>
				<label>
					<input
						type="radio"
						name="radio"
						value="foo"
						onBlur={onBlurHandler}
						onChange={onChangeHandler}
					/>
        foo
				</label>
				<br />
				<label>
					<input
						type="radio"
						name="radio"
						value="bar"
						onBlur={onBlurHandler}
						onChange={onChangeHandler}
					/>
        bar
				</label>
				<br />
				<label>
					<input
						type="radio"
						name="radio"
						value="baz"
						onBlur={onBlurHandler}
						onChange={onChangeHandler}
					/>
        baz
				</label>
			</fieldset>
			<label>
				<input
					type="checkbox"
					name="checkbox"
					value="hoge"
					onBlur={onBlurHandler}
					onChange={onChangeHandler}
				/>
        hoge
			</label>
		</>
	);
};

調査

Radio

ブラウザ名 onBlur onChange
Google Chrome 動作する 動作する
Firefox 動作する 動作する
Mac safari 動作しない 動作する
iPad safari 動作しない 動作する
Android Chrome 動作する 動作する

Checkbox

ブラウザ名 onBlur onChange
Google Chrome 動作する 動作する
Firefox 動作する 動作する
Mac safari 動作しない 動作する
iPad safari 動作しない 動作する
Android Chrome 動作する 動作する
0
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
0
1