前提・実現したいこと
DBから取得したレコードをforEachで表示させ、ID単位で値を取得したい
発生している問題・エラーメッセージ
java(Spring MVC)を利用してECサイトを構築中です。
DBから注文関連の各種レコードを取得し、表にしてjspに表示させます。
必要な値の取得は全てできています。
この表には1レコードに1つのチェックボックスがついてきます。
表の下にはフォームが4つ設けられています。
c:forEachで取得できたレコードの数だけループして表示させます。
本題です。
チェックボックスをクリックしたとき、そのレコードと同じIDの情報を
4つのフォームにも表示させるようにしたいのですが、
思った動作をするのはループ1回目に表示されたレコードにチェックをした時のみで、
ループ2回目以降のレコードはチェックを入れても正しく動作をしません。
どのチェックボックスをクリックしてもループ1回目のレコードが表示されてしまいます。
※この部分はjQueryで実装しようとしています。
なんとか解決しようと思ったのですが、限界を迎えてしまいました。
どなたかご教授お願いできませんでしょうか。
該当のソースコード
jsp
1<div class="scroll"> 2 <table class="margin" border="1" > 3 <tr> 4 <th class="emp-th">選択</th> 5 <th class="emp-th">注文日</th> 6 <th class="emp-th">注文番号</th> 7 <th class="emp-th">顧客番号</th> 8 <th class="emp-th">顧客氏名</th> 9 <th class="emp-th">合計金額</th> 10 </tr> 11 <c:forEach var="pay" items="${payment}" varStatus="loop"> 12 <form:form modelAttribute="paymentRegistModel"> 13 <tr> 14 15 <td><input type="checkbox" id="aaa"></td> 16 <th>${pay.new_order_date}</th> 17 <th>${pay.new_order_id}</th> 18 <th>${pay.customer_id}</th> 19 <th>${pay.customer_name}</th> 20 <th>${pay.total_price}</th> 21 22 </tr> 23 </form:form> 24 </c:forEach> 25 </table> 26</div> 27 28<c:forEach var="pay" end="0" items="${payment}"> 29 <form:form modelAttribute="paymentRegistModel"> 30 入金日:<form:input path="payment_date" name="pd" id="pd" class="letter" type="text" value="${pay.payment_date}"/><br> 31 合計額:<form:input path="total_price" name="tp" id="tp" class="letter" type="text" value="${pay.total_price}"/><br> 32 入金額:<form:input path="total_price" name="tp1" id="tp1" class="letter" type="text" value="${pay.total_price}"/><br> 33 振込人名:<form:input path="customer_name" name="cn" id="cn" class="letter" type="text" value="${pay.customer_name}"/><br> 34 35 </form:form> 36 37</c:forEach>
jquery
1<script> 2 3//フォーム初期値を空にする(しないと初期状態で0とか入る) 4 $(document).one("ready", function(){ 5 $("#pd").val(""); 6 $("#tp").val(""); 7 $("#tp1").val(""); 8 $("#cn").val(""); 9 }); 10 11 $(function(){ 12//DBから拾った値を一度変数化 13 var pd = $('#pd').attr("value"); 14 var tp = $('#tp').attr("value"); 15 var tpp = $('#tp1').attr("value"); 16 var cn = $('#cn').attr("value"); 17 18//チェックボックスを押したらフォームに表示させる 19 20 $('[type=checkbox]').click(function(){ 21 22 $('#pd').val(pd); 23 $('#tp').val(tp); 24 $('#tp1').val(tpp); 25 $('#cn').val(cn); 26 }) 27 }); 28 29//チェックボックスを外したら表示を消す 30 $(function(){ 31 $('#aaa').on('change',function(){ 32 var test = $(this).prop('checked'); 33 if(test != true){ 34 $('#pd').val(""); 35 $('#tp').val(""); 36 $('#tp1').val(""); 37 $('#cn').val(""); 38 } 39 }) 40 }); 41 42</script>
試したこと
・DBから取得した値が格納されている${payment}の位置を見直し
・jQueryの書き方をいくつか試す
回答2件
あなたの回答
tips
プレビュー