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

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

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

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

Q&A

1回答

465閲覧

クリックイベントが重複されている場合

Tanimican

総合スコア30

jQuery

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

0グッド

0クリップ

投稿2022/06/24 05:09

編集2022/06/24 08:31

html

1<!-- modal open --> 2 <a class="js-modal-open" href="" data-target="modal01">モーダルウィンドウを開く</a> 3 <!-- ./modal open --> 4 <p>HELLO</p> 5 <div id="test"></div> 6 <div id="test2"></div> 7 8 <!-- modal --> 9 <div id="modal01" class="c-modal js-modal"> 10 <!--<form role="form" action="" method="post">--> 11 <div class="c-modal_bg js-modal-close"></div> 12 <div class="c-modal_content _lg"> 13 <div class="c-modal_content_inner"> 14 <!--ここにモーダルウィンドウの内容が入ります--> 15 16 <br>予算 17 <input type="text" id="yosan" name="yosan">18 19 <p> 20 <input type="checkbox" name="shopping" id="c1" value="お肉">お肉 21 <select name="meat" id="m11"> 22 <option value="牛肉">牛肉</option> 23 <option value="豚肉">豚肉</option> 24 <option value="鶏肉">鶏肉</option> 25 </select> 26 <input type="checkbox" name="shopping" id="c2" value="">27 <input type="checkbox" name="shopping" id="c3" value="">28 <input type="checkbox" name="eating" id="c4" value="">29 </p> 30 31 <a class="js-modal-close c-modal_close" href=""> 32 <br>閉じる 33 </a> 34 <button type="submit" class="btn btn-primary" id="chgDateSub" name="soushin" value="dateup">送信する</button> 35 </div> 36 </div>

jquery

1 $(function(){ 2 $('#button5').on('click',function(){ 3 $('input:checkbox[name="shopping"]').val(["お肉","魚","卵"]); 4 }); 5 $('#button6').on('click', function(){ 6 $('input:checkbox[name="shopping"]').prop('checked',false); 7 $('input:checkbox[name="eating"]').prop('checked',false); 8 }); 9 $('#chgDateSub').on('click', function(){ 10 $('input[type=checkbox]:checked').each(function(){ 11 var value = '<span>'+$(this).val()+'</span>'; 12 $(value).appendTo($('#test')); 13 }); 14 }); 15 $('#chgDateSub').on('click', function(){ 16 $('input[type=radio]:checked').each(function(){ 17 var value = '<span>'+$(this).val()+'</span>'; 18 $(value).appendTo($('#test')); 19 }); 20 }); 21 $('#chgDateSub').on('click', function() { 22 var str = $('#m11 option:selected').text(); 23 $('#test').text(str); 24 }); 25 $('#m11').hide(); 26 $('#c1').on('click', function(){ 27 $('#m11').slideToggle(this.checked); 28 }); 29 });

チェックボックスを使って、チェックを入れて送信ボタンを押下すると表示させるようにしていました。
ですが、
$('#chgDateSub').on('click', function() {
var str = $('#m11 option:selected').text();
$('#test').text(str);
});
$('#m11').hide();
$('#c1').on('click', function(){
$('#m11').slideToggle(this.checked);
});
ここから重複されてチェックしてもお肉の部分しか表示されなくなり、この場合どうしたらよろしいですか?

魚、卵、芋の部分がチェックを入れても送信できません。この部分にチェックを入れて送信した場合、牛肉と表示されます。
ここの魚、卵、芋が表示できるようにしたいです。
イメージ説明
イメージ説明
イメージ説明

1枚目が本文です。
2枚目は魚を送信しようとしています。
3枚目送信を押した後の結果です。

魚を押しているのに、お肉の項目(牛肉)が表示されているってことです。

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

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

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

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

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

yambejp

2022/06/24 05:17 編集

何をしたときにどうなる想定か、もうすこし丁寧に説明してください。 とりあえず動作は安定していませんが「お肉」をチェックに連動して 牛・豚・鶏のセレクトボックスが表示/非表示されるのはわかりますが その他のチェックボックスはどうしたいのでしょうか? チェック状態で全OFFしてもセレクトボックスが消えないのをなんとかしたいのでしょうか?
guest

回答1

0

「name=shoppingかname=eatingの一つでもチェックがあれば送信ボタンが押せるようになる」
という仕様であれば以下

javascript

1<script> 2$(function(){ 3 var chk=$("[name=shopping],[name=eating]"); 4 chk.on('change',function(){ 5 $('#chgDateSub').prop('disabled',!chk.is(':checked')); 6 }).eq(0).trigger('change'); 7}); 8</script> 9<form> 10<input type="checkbox" name="shopping" id="c1" value="お肉">お肉 11<select name="meat" id="m11"> 12<option value="牛肉">牛肉</option> 13<option value="豚肉">豚肉</option> 14<option value="鶏肉">鶏肉</option> 15</select> 16<input type="checkbox" name="shopping" id="c2" value="魚">17<input type="checkbox" name="shopping" id="c3" value="卵">18<input type="checkbox" name="eating" id="c4" value="芋">19<button type="submit" class="btn btn-primary" id="chgDateSub" name="soushin" value="dateup">送信する</button> 20</form>

modal処理

以下がmodalの基本になります
あとは何をどうしたときに、どこに何をどうしたいのか?をはっきりしてください

javascript

1<style> 2dialog::backdrop{ 3 background-Color:rgba(255,0,0,0.7); 4} 5</style> 6<script> 7window.addEventListener('DOMContentLoaded', ()=>{ 8 document.querySelector('.js-modal-open').addEventListener('click',e=>{ 9 e.preventDefault(); 10 modal01.showModal(); 11 }); 12 chgDateSub.addEventListener('click',e=>{ 13 e.preventDefault(); 14 let v=document.querySelector('[name=shopping]:checked,[name=eating]:checked')?.value??""; 15 if(v=="お肉") v=m11.value; 16 test.textContent=v; 17 modal01.close(); 18 }); 19 chgDateSub.addEventListener('click',e=>{ 20 e.preventDefault(); 21 test.textContent=document.querySelector('[name=shopping]:checked,[name=eating]:checked')?.value??""; 22 modal01.close(); 23 }); 24 closeModal.addEventListener('click',e=>{ 25 e.preventDefault(); 26 modal01.close(); 27 }); 28 29}); 30</script> 31<a class="js-modal-open" href="#" data-target="modal01">モーダルウィンドウを開く</a> 32<p>HELLO</p> 33<div id="test"></div> 34<div id="test2"></div> 35<dialog id="modal01"> 36<div class="c-modal_bg js-modal-close"></div> 37<div class="c-modal_content _lg"> 38<div class="c-modal_content_inner"> 39<br>予算 40<input type="text" id="yosan" name="yosan">41<p> 42<input type="checkbox" name="shopping" id="c1" value="お肉">お肉 43<select name="meat" id="m11"> 44<option value="牛肉">牛肉</option> 45<option value="豚肉">豚肉</option> 46<option value="鶏肉">鶏肉</option> 47</select> 48<input type="checkbox" name="shopping" id="c2" value="魚">49<input type="checkbox" name="shopping" id="c3" value="卵">50<input type="checkbox" name="eating" id="c4" value="芋">51</p> 52 53<button type="button" id="closeModal" >閉じる</button> 54<button type="submit" id="chgDateSub" name="soushin" value="dateup" disabled>送信する</button> 55</div> 56</dialog>

投稿2022/06/24 05:35

編集2022/06/24 10:11
yambejp

総合スコア114883

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

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

Tanimican

2022/06/24 07:02

送信ボタンを押すと<div id="test"></div>に表示させたいです。 例えば、魚にチェック入れて送信押すと、#testの欄に魚と表示させたいです。 今のコードだと、牛肉が優先されて他のチェックを入れても牛肉と表示されます。
yambejp

2022/06/24 07:54

送信する=ページ遷移するのですよね? 受け取った側のサーバーサイドプログラムはなにか想定していますか? jsで受け取るつもりですか?(localStorage?)
Tanimican

2022/06/24 08:05

モーダルウィンドウを開く前のページに表示させたいです、
yambejp

2022/06/24 08:13

ごめんなさい、意味がわかりません ページは移動するのですか?しないのですか? ページを移動しないのであれば送信しないということでよいですか? 前回自己解決とされていましたがそもそもモーダル処理になってませんよ
Tanimican

2022/06/24 08:33

すいません、説明不足でした。 前回のは講師に送信したところokをもらえたので解決したと思っていました。 画像を追加しました。アニメーションの仕方はわからなかったのでこの形でしています。
yambejp

2022/06/24 09:39

モーダル処理はここにきてfirefoxでもようやく仕様が統一されたので dialogタグにて処理することをおすすめします。 もともと優勢だったjQuery-uiのdialog処理は、uiのサポート終了とともに 非推奨な機能になりました
Tanimican

2022/06/24 09:55

わかりました やりたかったことは、Jqueryで解決すること。 今は、お肉以外のチェック部分(魚、卵)とかをチェックして送信すると、牛肉と表示されてしまっている。 これを(魚、卵)などをチェックして送信した場合、魚、卵と表示できるようにしたいということでした。
yambejp

2022/06/24 10:13

一部修正しました。 お肉にチェック=お肉で選ばれた肉の種類が表示 魚にチェック=魚が表示 お肉と魚にチェック=お肉で選ばれた肉の種類が表示 という仕組みにしておきました nameが同じチェックボックスを使う限り競合は防げません。 競合したときにどう処理をしたいかよくよく仕様を検討した方がよいでしょう
Tanimican

2022/06/24 10:27

了解しました。 Jqueryで書くとどうなるのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問