#※原因が判明したので下部に追記しました!
##jQueryで特定のラジオボタンのみを対象にしたい
とあるお申込みフォームページで以下のjQueryを実行すると、お申込みフォームページ内の全てのラジオボタンが disabled になると思います。
jQuery
1$(function(){ 2 $('input[type="radio"]').prop('disabled',true); 3});
これでページ内にある以下のラジオボタン
html
1<input type="radio" class="class-age" name="age" value="10代" checked="checked" /> 2<input type="radio" class="class-age" name="age" value="20代" /> 3 4<input type="radio" class="class-gender" name="gender" value="男性" checked="checked" /> 5<input type="radio" class="class-gender" name="gender" value="女性" /> 6 7<input type="radio" class="class-people" name="people" value="1人" checked="checked" /> 8<input type="radio" class="class-people" name="people" value="2人以上" />
の全ては disabled になると思いますが、ここで
html
1<input type="radio" name="people" value="1人" checked="checked" /> 2<input type="radio" name="people" value="2人以上" />
の部分だけは disabled にしたくないとします。その場合はどう記述すれば良いのでしょうか?
##以下のようにすればいけるのでは?
と思い実行してみたものの、disabledにすらならず……。
jQuery
1$(function(){ 2 $('.class-age, .class-gender').prop('disabled',true); 3});
どなたかお教えいただければ幸いです。
よろしくお願いいたします。
##【原因が判明しました】そして新たな問題が……
コメント欄より(nullpot様より)ご指摘がございまして、原因が判明しました。
上記のやり方であっていたようなのです。では何がいけなかったのかと言いますと、
html
1<input type="radio" name="people" value="1人" checked="checked" /> 2<input type="radio" name="people" value="2人以上" />
の部分なんですが、あくまで参考用といいますか例文でして。私が勝手に考えたものだったんです。
実際にはwordpressのcontact form 7で作成しており、このコードではなく、以下の**[ショートコード]**を記入していました。
php
1[radio age class:class-age use_label_element default:1 "10代" "20代"] 2[radio gender class:class-gender use_label_element default:1 "男性" "女性"] 3[radio people class:class-people use_label_element default:1 "1人" "2人以上"]
それを実際に表示させた場合、次のようなソースコードになっていました。
※ とりあえずage(10代・20代)のみ以下に表示
html
1<span class="wpcf7-form-control-wrap age"> 2 <span class="wpcf7-form-control wpcf7-radio class-age"> 3 <span class="wpcf7-list-item first"> 4 <label> 5 <input type="radio" name="age" value="10代" checked="checked" /> 6 <span class="wpcf7-list-item-label">10代</span> 7 </label> 8 </span> 9 <span class="wpcf7-list-item last"> 10 <label> 11 <input type="radio" name="age" value="20代" /> 12 <span class="wpcf7-list-item-label">20代</span> 13 </label> 14 </span> 15 </span> 16</span>
###class="class-age"が<input type="radio"...のところに入ってない!
なんということでしょう、なんかよーわからん<span>の部分にclass-ageが入っているではないですか。
これが原因でした。なんだこれは……これならうまくいかなかったのも頷けます。jQueryは悪くなかったんですね~。
###では一体どうすればいいのか?
恐らく以下のような感じにすればいいのでは?と思っていますが……これがわからないでいます。
jQuery
1$(function(){ 2 $('.class-ageの中(内側)にあるinput[type="radio"]要素').prop('disabled',true); 3});
あとちょっとでゴールまで行けそうなんですが、簡単そうに見えて私の実力では残念ながらクリアできないという……。
どなたかお教え願えませんでしょうか?

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 14:00 編集
2019/09/18 14:02