フロントの人の雑多メモ

【JS】labelをクリックしたときの.prop("checked", false)でラジオのチェックを外せない時の対処法

【JS】labelをクリックしたときの.prop("checked", false)でラジオのチェックを外せない時の対処法

<label>タグをクリックしてラジオボタンのチェックを外したいとき

jQueryならおよそこのように

$("label").on("click", function(){
	$("input[type=radio]").prop("checked", false);
});

バニラなJSならおよそこのようにすれば、チェックを外せそうですが

document.querySelector("label").onclick(function(){
	document.querySelector("input[type=radio]").checked = false;
});

これだと

① <label>をクリックする

② JSでチェックが外れる

③ 指を離した瞬間に、本来の挙動でチェックが入る

という順番になり、チェックを外すことができません。

なので

setTimeoutで少し遅延を入れましょう

$("label").on("click", function(){
	setTimeout(function(){
		$("input[type=radio]").prop("checked", false);
	}, 50); //50msの遅延
});

50msの遅延を入れてますが、1msでも、何故か0msでも大丈夫でした。

ですがユーザーのマシンスペックに依存する部分だとは思いますので、念のため50msにしています。

バニラなJSでもsetTimeoutの構文は同じです。

document.querySelector("label").onclick(function(){
	setTimeout(function(){
		document.querySelector("input[type=radio]").checked = false;
	}, 50) //50msの遅延
});

labelクリックでラジオボタンのチェック状態を切り替えたいときは、setTimeoutを少し入れよう!でした。

コメント

「できました!」などの報告もお待ちしております。

内容を確認の上、個人情報などは省いて掲載させていただきます。

お名前・メールアドレスも入力する

メールで返信がほしい場合に入力してください。

頂いた個人情報は開示しません。返信のためだけに利用いたします。

直接送信されます。確認の上、「送信」してください。

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る


または以下のボタンからなにか買って応援 (PR)

Amazon

楽天市場

Yahoo!ショッピング

Amazonのアソシエイトとして「けん」は適格販売により収入を得ています。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア

お役に立てましたら応援をお待ちしております!
頂いた応援は子育てに活用させていただきます。

OFUSEで応援を送る