前提
ECサイトのショッピングカートを作成しています。
【現在】
カートに商品を追加→商品ページに戻る→カートに商品を追加→商品ページに戻る→...
で在庫数より多くカートに追加できてしまいます。
ex.)
在庫50個なのに
カートに40個追加→商品ページに戻る→カートに20個追加
が可能な状態。
実現したいこと
商品をショッピングカートに追加する際、
カートに追加したい商品個数 + すでにカート内にある商品個数 <= 在庫数
の場合のみカートに追加ボタンを表示する。
直前のActionでsessionに在庫数は格納しておりsession.itemDetail.itemStockで取得できますので、
Javascriptでこのsession値が使えればと思っています。
可能でしょうか?
現在のソースコード
html
1<head> 2<script> 3function change(){ 4if(document.getElementById('changeSelect')){ 5 //カートに追加したい商品個数 6 id = document.getElementById('changeSelect').value; 7 8 if(id + すでにカート内にある商品個数 <= 在庫数【ここでsession値を使う】){ 9 document.getElementById('firstBox').style.display = ""; 10 document.getElementById('secondBox').style.display = "none"; 11 }else if(id + すでにカート内にある商品個数 > 在庫数【ここでsession値を使う】){ 12 document.getElementById('firstBox').style.display = "none"; 13 document.getElementById('secondBox').style.display = ""; 14 } 15} 16} 17window.onload = change; 18</script> 19</head> 20 21<body> 22 <!-- カートに追加したい商品個数 --> 23 <select name="itemCount" id="changeSelect" onchange="change();"> 24 <script> 25 for(i = 1; i <= <s:property value="session.itemDetail.itemStock"/>; i++){ 26 document.write("<option>"); 27 document.write(i); 28 document.write("</option>") 29 } 30 </script> 31 </select> 32 33 <!-- ショッピングカートボタン --> 34 <div class="shoppingCartButton" id="firstBox"> 35 <a href="カート処理">カートに入れる</a> 36 </div> 37 <div class="shoppingCartButton" id="secondBox"> 38 <p>売り切れ</p> 39 </div> 40</body>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。