質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

2676閲覧

ラジオボタンのチェックを外したい

ryu_k

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/08/05 02:57

編集2020/08/05 02:59

bootstrap4を使用しています。
buttonを押すと、ラジオボタンのチェックを外すというjQueryの処理が思い通りにならず困っております。
どなかた、お知恵をお借りしたいです。

html

1<table> 2 <tr><td>1行目</td> 3 <td><input type="button" value="clear" class="row_clear"></td> 4 <td><input type="text"></td> 5 <td> 6 <div class="row"><div class="col-auto"> 7 <div class="btn-group btn-group-toggle" data-toggle="buttons"> 8 <label class="btn btn-outline-primary"><input value="1" type="radio" />AA</label> 9 <label class="btn btn-outline-primary"><input value="2" type="radio" />BB</label> 10 </div> 11 </div></div> 12 </td> 13 </tr> 14 <tr><td>2行目</td> 15 <td><input type="button" value="clear" class="row_clear"></td> 16 <td><input type="text"></td> 17 <td> 18 <div class="row"><div class="col-auto"> 19 <div class="btn-group btn-group-toggle" data-toggle="buttons"> 20 <label class="btn btn-outline-primary"><input value="1" type="radio" />AA</label> 21 <label class="btn btn-outline-primary"><input value="2" type="radio" />BB</label> 22 </div> 23 </div></div> 24 </td> 25 </tr> 26</table>

テーブルの各行にテキストボックスとラジオボタンを配置しています。(行は動的です)
clearボタン押下時に以下のjQueryでテキストボックスの値とラジオボタンの選択をクリアしたいと思っています。

javascript

1// テーブル行値クリア 2$(document).on('click', '.row_clear', function () { 3 $(this).closest('tr').find('[type=text]').val(''); 4 5 $(this).closest('tr').find('[type=radio]').removeAttr('checked'); //★1 6 $(this).closest('tr').find('[type=radio]').prop("checked", false); //★2 7});

テキストボックスの値はクリアされるのですが、ラジオボタンのチェックが外れなくて困っています。
★1でも★2でも動作しませんでした。
どこが誤っているのかアドバイスをいただきたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

bootstrap4を使用とのことなのでラジオボタンを選択した際にラジオボタンを囲んでいるlabelにactiveクラスが付与されていると思われます。
これはBootstrapのほうで付与されているのでラジオボタンのみクリアしても値は選択されていないがlabelのactiveが残ったままなので見た目は選択されているような状態になります。

クリアボタンを押したときに該当のlabelのactiveクラスも消しましょう。

投稿2020/08/06 08:15

gogoweb_ikeda

総合スコア1426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryu_k

2020/08/07 01:04

ご回答いただきありがとうございます。私がソースと格闘している間に、回答をいただいているのを見逃しておりました。まさにご指摘の内容でした。ありがとうございました!
guest

0

★1はあまり意味がないかも
普通に動きますので、jQueryのバージョンが古いだけかも

投稿2020/08/05 03:43

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/05 03:44

jsだけでやるなら window.addEventListener('DOMContentLoaded', ()=>{ document.querySelectorAll('.row_clear').forEach(x=>{ x.addEventListener('click',()=>{ x.closest('tr').querySelectorAll(':checked').forEach(x=>{ x.checked=false; }); x.closest('tr').querySelectorAll('[type=text]').forEach(x=>{ x.value=""; }); }); }); });
ryu_k

2020/08/06 08:02

ご回答ありがとうございます。jqueryは3.5.1を使用しています。 以下を試してみましたが、やはり動作しませんでした。。。 var result = $(this).closest('tr').find('[type=radio]') console.log(result[0].checked); console.log(result[1].checked); →それぞれ選択されている状態が取得できました。 →このあと、以下を実施しても画面に反映されない状態です。。。 result[0].checked = false; result[1].checked = false; →まだ、選択状態が残っています。上記実行後値を取得すると、 false、false になってくれてはいるのですが・・・画面リフレッシュとか必要なのでしょうか。
yambejp

2020/08/06 08:06 編集

実はチェックボックスをカスタマイズして なんらかの疑似表示をさせているとかありませんか?
ryu_k

2020/08/06 08:13

ありがとうございます。 試しにbootstrapのトグルボタンをやめて、ただのradioで実施してみたら、しっかり外れてくれました。 トグルボタン側を何とかしないといけないのですね・・・もう少し調べてみます。。。
ryu_k

2020/08/06 08:31

解決しました。ありがとうございます! radioボタンを選択したときに、<input type=radio>の方ではなく、 <label class="btn btn-outline-primary">に"active"が追加されていてました。 このクラスをremoveすると、選択解除されました。 本当に助かりました。ありがとうございました。
yambejp

2020/08/06 08:35

いや、私は的はずれな回答でしただけなので、 gogoweb_ikedaさんにBAつけてあげてください
ryu_k

2020/08/07 01:06

yambejpさん、ありがとうございました。gogoweb_ikedaさんにベストアンサーをつけさせていただきました。yambejpさんの回答はとてもヒントになりました!
guest

0

張られたソースコードで検証したところ、★2 は動作しました。
(IE11、Chrome 84 にて確認)

ソースコードは正しそうですが、
Ctrl + F5 で再読み込みしても動かないでしょうか。

投稿2020/08/05 03:06

編集2020/08/05 03:07
mar-kn

総合スコア306

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryu_k

2020/08/06 07:57

ご回答ありがとうございます。 試してみたのですが、動作しませんでした。私の環境が悪いのかもしれません・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問