商品规格选择页面
2015-08-20 15:58
453 查看
最近在做电商项目,一直觉得商品规格选择是最困难的部分,但是这次换了个思路:
如果该商品sku存在,则购买按钮可按,如果sku不存在,则购买按钮不可按,原来的好多代码简化成一个统一的方式
如果该商品sku存在,则购买按钮可按,如果sku不存在,则购买按钮不可按,原来的好多代码简化成一个统一的方式
<html> <head> <script type="text/javascript"> //页面初始化时的skuId var skuId = '${goodsVO.goods.stockConfs[0].id}'; $(function(){ //默认初次加载第一个stockconf <c:forEach items="${goodsVO.goods.stockConfs[0].goodsSpecificationVals}" var="val"> var id = '${val.id}'; $("#"+id).attr("class","selected"); </c:forEach> }); //更改状态 function changeVal(id, parentId) { changeStatus(id, parentId); if(!matchSku()){ //不匹配则无法购买 alert("无法加入购物车"); } } //更改选中状态 function changeStatus(id, parentId) { $("#" + parentId + " li").each(function(){ $(this).attr("class",""); }); $("#" + id).attr("class","selected"); } //选中的规格和所有的库存配置进行比较 function matchSku(){ var arr1 = new Array(); //获取所有选中的规格框 $("li[class='selected']").each(function(index, element){ arr1.push(element.id); }); <c:forEach items="${goodsVO.goods.stockConfs}" var="sku"> var arr2 = new Array(); <c:forEach items="${sku.goodsSpecificationVals}" var="val"> arr2.push('${val.id}'); </c:forEach> if (arr1.sort().toString() == arr2.sort().toString()) { skuId = '${sku.id}'; changeInfo(skuId); return true; } </c:forEach> return false; } //更改库存配置信息 function changeInfo(id){ } //减少数量 function delItem() { var buyNum = $("#buyNum").val(); if (buyNum <= 1){ return ; } $("#buyNum").val(buyNum - 1); } //增加数量 function addItem() { var buyNum = $("#buyNum").val(); $("#buyNum").val(buyNum*1 + 1); } //加入购物车 function addCart() { var url = "${path}/or/shopCart/addItems"; var buyNum = $("#buyNum").val(); var params = {"stockConfId" : skuId, "num" : buyNum}; $.post(url, params, function(data) { if (data) { alert("加入购物车成功"); } }, "json"); } //查看购物车 function viewCart(){ window.location="${path}/or/shopCart/list/"; } //直接购买 function account() { var url = "${path}/or/shopCart/account/"+skuId+"/"+$("#buyNum").val(); window.location = url; } </script> </head> <body> <div>商品库存配置页面</div> 商品信息${goodsVO.goods.name} sku信息: <c:forEach items="${goodsVO.goods.stockConfs}" var="model"> 市场价:${model.marketPrice} <br/> 零售价:${model.retailPrice} <br/> 批发价:${model.salePrice} <br/> 规格: <c:forEach items="${model.goodsSpecificationVals}" var="gsv"> 名称:${gsv.name} 值:${gsv.value} <br/> </c:forEach> </c:forEach> <br/> <br/> 所有的规格信息: <c:forEach items="${goodsVO.specificationMap}" var="model"> ${model.key} ${model.value[0].name} <c:forEach items="${model.value}" var="val"> ${val.value} </c:forEach> <br> </c:forEach> <div class="goodsBox"> <c:forEach items="${goodsVO.specificationMap}" var="model"> <dl class="insurance goodsAttr"> <dt> <label>${model.value[0].name}:</label> <ul id="parent${model.value[0].goodsSpecification.id}"> <c:forEach items="${model.value}" var="val"> <a href="javascript:void(0);" onclick="changeVal('${val.id}','parent${model.value[0].goodsSpecification.id}')"><li id="${val.id}"> ${val.value}</li></a> </c:forEach> </ul> </dt> </dl> </c:forEach> </div> 购买数量<a href="javascript:void(0);" onclick="delItem()">-</a> <!--控制输入框,只能输入正整数,否则,默认填充1 --> <input type="text" id="buyNum" value="1"/> <a href="javascript:void(0);" onclick="addItem()">+</a> <br/> <a href="javascript:void(0);" onclick="addCart()">加入购物车</a> <a href="javascript:void(0);" onclick="account()">立即购买</a> <a href="javascript:void(0);" onclick="viewCart()">查看购物车</a> </body> </html>
相关文章推荐
- 二维几何模板 - 圆和球有关计算模板
- Java常见面试题
- C#多任务并行阶段控制—— Threading.Barrier
- AppHub:绕过苹果审核机制更新iOS App
- JS中的数据类型和变量内存
- Android系统架构
- Android(java)学习笔记183:判断SD卡状态和存储空间大小
- iOS开发基础篇-CoreLocation定位服务
- 关机 (系统的关机、重启以及登出 )
- c++中32位64位操作系统基本数据类型字节大小
- 堆排序及各种排序算法总结
- MR案例:路径过滤PathFilter
- Red Hat 6.4安装 OpenLDAP 2.4.23
- UVA 11582 - Colossal Fibonacci Numbers!
- [nginx] nginx + spawn-fcgi + wsapi/lua(搭建lua的web dev平台)
- blur 简单滤波
- JavaScript(二)-13-(全局方法&Number对象)
- GPS 的PPS
- 退出循环:break和continue
- IE浏览器下ajax缓存导致数据不更新的解决方法