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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

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

HTML

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

Q&A

解決済

2回答

4115閲覧

jQueryで特定のラジオボタンのみを対象にしたい

tartnac

総合スコア18

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

jQuery

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

HTML

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

0グッド

0クリップ

投稿2019/09/18 11:29

編集2019/09/18 14:02

#※原因が判明したので下部に追記しました!

##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});

あとちょっとでゴールまで行けそうなんですが、簡単そうに見えて私の実力では残念ながらクリアできないという……。
どなたかお教え願えませんでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは

$('.class-ageの中(内側)にあるinput[type="radio"]要素').prop('disabled',true);

上記を(.class-gender の中にある も加えて)書けば、以下です。

javascript

1$('.class-age input[type="radio"], .class-gender input[type="radio"]').prop('disabled',true);

投稿2019/09/18 13:54

jun68ykt

総合スコア9058

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

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

tartnac

2019/09/18 14:00 編集

$('.class-age > input[type="radio"], .class-gender > input[type="radio"]').prop('disabled',true); のようにやって「やっぱりこれじゃ無理か~」とか思ってたんですが、あああ!そうか、そうですよね! なんでわからなかったんだろう……ありがとうございます、無事に動きました!!
jun68ykt

2019/09/18 14:02

@tartnacさん どういたしまして。 > 無事に動きました!! とのことで、よかったです????
guest

0

以下のようにサンプルを作成したところ、再現しませんでした(動いてしまいました)

html

1 2<input type="radio" class="class-age" name="age" value="10代" checked="checked"/> 3<input type="radio" class="class-age" name="age" value="20代"/> 4 5 6<input type="radio" class="class-gender" name="gender" value="男性" checked="checked"/> 7<input type="radio" class="class-gender" name="gender" value="女性"/> 8 9<input type="radio" class="class-people" name="people" value="1人" checked="checked"/> 10<input type="radio" class="class-people" name="people" value="2人以上"/> 11 12 13<script src="https://code.jquery.com/jquery-3.4.1.min.js" 14 integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> 15 16<script> 17 $(function () { 18 $('.class-age, .class-gender').prop('disabled', true); 19 }); 20</script> 21 22

投稿2019/09/18 12:59

nullpot

総合スコア153

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

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

tartnac

2019/09/18 13:13

何ですって……ッ!? すみません、ちょっと調べてみます!
tartnac

2019/09/18 13:28

なるほど!原因が判明したっぽいです。ちょっと質問の文章に追記させていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問