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

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

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

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

jQuery

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

Q&A

解決済

3回答

1739閲覧

複数グループのラジオボタンを選択時にそれぞれ違った結果を表示させたい

southern_flavor

総合スコア70

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/06/18 09:08

ソースコードにあるsample1とsample2のラジオボタンによる組み合わせで
それぞれ違った結果を表示させたいです。

一例をだすと
sample1の「1」とsample2の「ミカン」を選択したら

「文言2
光陰矢の如し」

と表示されるなど。

それぞれの希望する処理についてはif文の前にコメントアウトしました。

現状は、まったく違う結果が出てしまいます。
change()やcheckedで試しまたが、手詰まりになってしまい、
お手数ですが、解決策を教えていただけないでしょうか?

javascript

1$(function(){ 2 var wagahai = '<p>吾輩は猫である</p>' 3 var koin = '<p>光陰矢の如し</p>' 4 var pattern1 = '文言1'; 5 var pattern2 = '文言2'; 6 var pattern3 = '文言3'; 7 $resulta = $('.resulta'); 8 $resultb = $('.resultb'); 9 10 //1とりんごまたは、おかしを選択したら以下の処理 11 $("#q1-1,input[value='りんご'],input[value='おかし']").on('change', function(){ 12 if( $("#q1-1").is(':checked') && 13 $("input[value='りんご']").is(':checked') || 14 $("input[value='おかし']").is(':checked') ) { 15 $resulta.show().text(pattern1); 16 $resultb.show().html(koin); 17 } 18 }); 19 20 //1とみかんを選択したら以下の処理 21 $("#q1-1,input[value='みかん']").on('change', function(){ 22 if ( $("#q1-1").is(':checked') && 23 $("input[value='みかん']").is(':checked') ) { 24 $resulta.show().text(pattern2); 25 $resultb.show().html(koin); 26 } 27 }); 28 29 //2とみかんまたは、りんごまたは、おかしを選択したら以下の処理 30 $("#q1-2,input[value='みかん'],input[value='りんご'],input[value='おかし']").on('change', function(){ 31 if ( $("#q1-2").is(':checked') && 32 $("input[value='みかん']").is(':checked') || 33 $("input[value='りんご']").is(':checked') || 34 $("input[value='おかし']").is(':checked') ) { 35 $resulta.show().text(pattern3); 36 $resultb.show().html(wagahai); 37 } 38 }); 39 40 //3とみかんまたは、りんごまたは、おかしを選択したら以下の処理 41 $("#q1-3,input[value='みかん'],input[value='りんご'],input[value='おかし']").on('change', function(){ 42 if ( $("#q1-3").is(':checked') && 43 $("input[value='みかん']").is(':checked') || 44 $("input[value='りんご']").is(':checked') || 45 $("input[value='おかし']").is(':checked') ) { 46 $resulta.show().text(pattern3); 47 $resultb.show().html(wagahai); 48 } 49 }); 50});

html

1<h2>sample1</h2> 2<input type="radio" name="q1-1a" value="1" id="q1-1"> 3<label for="q1-1">1</label> 4<input type="radio" name="q1-1a" value="2" id="q1-2"> 5<label for="q1-2">2</label> 6<input type="radio" name="q1-1a" value="3" id="q1-3"> 7<label for="q1-3">3</label> 8 9<h2>sample2</h2> 10<input type="radio" name="q2-1a" value="りんご" id="q2-1"> 11<label for="q2-1">りんご</label> 12<input type="radio" name="q2-1a" value="みかん" id="q2-1"> 13<label for="q2-1">みかん</label> 14<input type="radio" name="q2-1a" value="おかし" id="q2-1"> 15<label for="q2-1">おかし</label> 16 17<div class="resulta"></div> 18<div class="resultb"></div>

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

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

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

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

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

guest

回答3

0

//1とりんごまたは、おかしを選択したら以下の処理 $("#q1-1,input[value='りんご'],input[value='おかし']").on('change', function(){ if( $("#q1-1").is(':checked') && $("input[value='りんご']").is(':checked') || $("input[value='おかし']").is(':checked') ) { $resulta.show().text(pattern1); $resultb.show().html(koin); } });
<input type="radio" name="q1-1a" value="1" id="q1-1"> <label for="q1-1">1</label>

↑id、値の組合せが存在しないものを選択しようとしても無理。

//1とりんごまたは、おかしを選択したら以下の処理 $("#q2-1,input[value='りんご'],input[value='おかし']").on('change', function(){ if( $("#q2-1").is(':checked') && $("input[value='りんご']").is(':checked') || $("input[value='おかし']").is(':checked') ) { $resulta.show().text(pattern1); $resultb.show().html(koin); } });
<input type="radio" name="q2-1a" value="りんご" id="q2-1"> <label for="q2-1">りんご</label>

↑こっちなら存在する。

<input type="radio" name="q2-1a" value="りんご" id="q2-1"> <label for="q2-1">りんご</label> <input type="radio" name="q2-1a" value="みかん" id="q2-1"> <label for="q2-1">みかん</label> <input type="radio" name="q2-1a" value="おかし" id="q2-1">

↑同一ドキュメント内で同じid使っちゃダメ。

投稿2018/06/18 09:27

tkturbo

総合スコア5572

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

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

southern_flavor

2018/06/20 13:31

ご回答ありがとうございます。 既存のコードをそのまま貼れないので、質問用に作成したコードですが、いろいろと不備があったようで失礼しました。
guest

0

ベストアンサー

「結果表示を変える処理」
「ラジオボタンにクリックイベントを設定」
を分けて考えるといいですよ。

javascript

1$(function () { 2 var wagahai = '<p>吾輩は猫である</p>'; 3 var koin = '<p>光陰矢の如し</p>'; 4 var pattern1 = '文言1'; 5 var pattern2 = '文言2'; 6 var pattern3 = '文言3'; 7 $resulta = $('.resulta'); 8 $resultb = $('.resultb'); 9 10 // 結果表示を変える処理 11 var changeResult = function changeResult() { 12 13 // いったん表示をクリア 14 $resulta.hide().text(''); 15 $resultb.hide().html(''); 16 17 // q1、q2の選択されている値を取得 18 var q1 = $('input[name=q1-1a]:checked').val(); 19 var q2 = $('input[name=q2-1a]:checked').val(); 20 21 // どっちかが選択されてないときは無視 22 if (q1 == undefined || q2 == undefined) return; 23 24 //1とりんごまたは、おかしを選択したら以下の処理 25 if (q1 == '1' && (q2 == 'りんご' || q2 == 'おかし')) { 26 $resulta.show().text(pattern1); 27 $resultb.show().html(koin); 28 } 29 30 //1とみかんを選択したら以下の処理 31 if (q1 == '1' && q2 == 'みかん') { 32 $resulta.show().text(pattern2); 33 $resultb.show().html(koin); 34 } 35 36 //2とみかんまたは、りんごまたは、おかしを選択したら以下の処理 37 if (q1 == '2' && (q2 == 'みかん' || q2 == 'りんご' || q2 == 'おかし')) { 38 $resulta.show().text(pattern3); 39 $resultb.show().html(wagahai); 40 } 41 42 //3とみかんまたは、りんごまたは、おかしを選択したら以下の処理 43 if (q1 == '3' && (q2 == 'みかん' || q2 == 'りんご' || q2 == 'おかし')) { 44 $resulta.show().text(pattern3); 45 $resultb.show().html(wagahai); 46 } 47 48 }; 49 50 // ラジオボタンにクリックイベントを設定 51 $('input[name=q1-1a],input[name=q2-1a]').click(changeResult); 52 53});

投稿2018/06/18 17:00

shun-K

総合スコア508

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

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

southern_flavor

2018/06/20 13:34

ご回答ありがとうございます。 クリックイベントや処理を別にやること、if文の指定の仕方など参考になりました。
guest

0

javascript

1var lista={ 21:"xxx", 32:"yyy", 43:"zzz", 5}; 6var listb={ 71:{"りんご":"aaa","みかん":"bbb","おかし":"ccc",}, 82:{"りんご":"ddd","みかん":"eee","おかし":"fff",}, 93:{"りんご":"ggg","みかん":"hhh","おかし":"iii",}, 10}; 11$(function(){ 12 $('[name="q1-1a"],[name="q2-1a"]').on('change',function(){ 13 var v1=$('[name="q1-1a"]:checked').val(); 14 var v2=$('[name="q2-1a"]:checked').val(); 15 if(v1 && v2){ 16 $('.resulta').text(lista[v1]); 17 $('.resultb').text(listb[v1][v2]); 18 } 19 }); 20}); 21

HTML

1<h2>sample1</h2> 2<label><input type="radio" name="q1-1a" value="1" id="q1-1a-1">1</label> 3<label><input type="radio" name="q1-1a" value="2" id="q1-2a-2">2</label> 4<label><input type="radio" name="q1-1a" value="3" id="q1-3a-3">3</label> 5 6<h2>sample2</h2> 7<label><input type="radio" name="q2-1a" value="りんご" id="q2-1a-1">りんご</label> 8<label><input type="radio" name="q2-1a" value="みかん" id="q2-1a-2">みかん</label> 9<label><input type="radio" name="q2-1a" value="おかし" id="q2-1a-3">おかし</label> 10 11<div class="resulta"></div> 12<div class="resultb"></div>

投稿2018/06/18 09:35

編集2018/06/18 09:37
yambejp

総合スコア114839

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

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

southern_flavor

2018/06/20 13:32

ご回答ありがとうございます。 配列を使うやり方、シンプルでわかりやすいのでこちらも参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問