商品选择未选择交替功能

商品选择未选择交替功能

弹窗实现
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191028145450338.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RhMTU5NDE4NA==,size_16,color_FFFFFF,t_70在这里插入图片描述


 <div class="content-init">
    <label>礼品:</label>
    <a class="content-init-add required" onclick="ChangeCustom()">选择商品</a>
 </div>
**弹窗**基于bootstrap框架弹图层
<div id="modal1" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    内容
<div>   
function ChangeCustom() {
	$(".modal-header h3").html("选择商品")
	$("#modal1").modal()
}

总体结构

<div class="row">
        <form>
            <div class="col-xs-12">
                <div class="content">
                    <div class="content-init">
                        <label>标题:</label>
                        <input style="width: 300px" class="required" id="title" type="text" value=""/>
                    </div>
                    <div class="content-init">
                        <label>限制条件:</label>
                        订单金额满<input style="width:111px;" id="min_price" type="text" value=""/><input type="text" style="width: 111px;" id="max_price" class="required" value=""/>
                    </div>
                    <div class="content-init">
                        <label>最多赠送数量:</label>
                        <input style="width: 300px" onchange="ValuemountA(this)" class="required" id="frequency" type="text" value=""/>
                    </div>
                    <div class="content-init">
                        <label>礼品:</label>
                        <a class="content-init-add required" onclick="ChangeCustom()">选择商品</a>
                    </div>
                </div>
                <div class="containe">
                    <div>
                        <table>
                            <thead>
                                <tr>
                                    <th>商品名称</th>
                                    <th>商品缩略图</th>
                                    <th>数量</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                            <tbody class="thead">

                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </form>
        <div class="sumbit">
            <button class="btAdd" onclick="addDatas()">提交</button>
        </div>
    </div><!-- /.row -->
<div id="modal1" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h3 id="myModalLabel"></h3>
    </div>
    <div class="modal-box">
        <div class="modal-body">
            <span class="title">选择商品</span>
            <div class="select">
                <div class="select-input">
                    <input style="width: 170px" placeholder="商品名称" value="" oninput="getCommodity(value)"/>
                </div>
                <div class="select-data"></div>
            </div>
        </div>
        <div class="modal-body-center">
            <div class="modal-body-center-button">
                <button class="bt1" onclick="addButton()">选择</button>
                <button class="bt1" onclick="cancelButton()">取消</button>
            </div>
        </div>
        <div class="modal-body-right">
            <span class="title">已选择商品</span>
            <div class="select-dates"></div>
        </div>
    </div>
    <div style="text-align: right;padding: 10px">
        <button class="btAdd" onclick="addModal()" aria-hidden="true" data-dismiss="modal">确定</button>
        <button class="btMove" class="close" data-dismiss="modal" aria-hidden="true">取消</button>
    </div>
</div>

右边框获取数据

 //接口获取数据
function getCommodity(title) {
        var url = "/Goods/SearchGoodsByName.html";
        $.get(url,{title:title},function (res) {
             res=JSON.parse(res)
            createDOM(res.data)
            data = res.data
            datalLsis=data
        })
    }
    var data=[] //总数据g
    var datalLsis=[] //全局总数据
    //封装右边渲染结构
    function createDOM(list) {
//        console.log(list)
        $('.select-data').html('')
        var specStr = '';
        $.each(list,function (index,value) {
            specStr+=`<div class="select-commodity"><input class="checkbox" value="${value.id}"' οnclick="change(${value.id})" type="checkbox" /><img style="width: 50px;height: 50px" src="${value.pic}"><div class="select-commodity-name"><span>商品名称:${value.title}</span><span>货号:${value.goods_sn}</span></div></div>`
        })
        $('.select-data').html(specStr)
    }
//右边渲染格式封装
    function afterDOM(lists) {
//        console.log(list)
        var specStrs = '';
        $.each(lists,function(index,item){
            specStrs+=`<div class="select-commodity"><input class="checkbox" οnchange="callChange(${item.id})" value="${item.id}"' type="checkbox" /><img style="width: 50px;height: 50px" src="${item.pic}"><div class="select-commodity-name"><span>商品名称:${item.title}</span><span>货号:${item.goods_sn}</span></div></div>`
        });
        $('.select-dates').html(specStrs)
    }

	var idList = [] //右边选择的商品id
    //获取右边已选的商品id 去重id
    function change(id) {
        if (idList.length == 0){
            idList.push(id)
        }else {
            var checkid = idList.some(item => {
                return item == id
            })
            if (checkid){
                var index = idList.indexOf(id);
                if(index > -1) {
                    idList.splice(index,1);
                }
            }else {
                idList.push(id)
            }
            }
            // console.log(idList)
        }

       var goodse=[]; //利用已选择的id过滤出的已选择的商品数据
//    点击选择选择商品按钮
    function addButton() {
        // console.log(data,idList)
        // 返回筛选出来已选择的数据
       var filterList = data.filter(item => {
            return idList.some(one => {
               return one == item.id
            })
        });
       // 返回未筛选的数据
       var afterList = data.filter(item2 => {
            return !(idList.some(one2 => {
                return one2 == item2.id
            }))
        });
        //将筛选的数据呵未选择的数据进行两边渲染
        createDOM(afterList)
        data = afterList
//       console.log(filterList,afterList,data)
        goodse= [...goodse,...filterList]; //将过滤后的数据和原有的数据合并
        //选择去重,不会重复添加渲染同id的数据
        let ary = goodse;
        let obj = {};
        goodse=ary.reduce((curs,next)=>{
                obj[next.id]?"":obj[next.id]=true&& curs.push(next);
        return curs;
    },[]);
//        console.log(goodse)
        afterDOM(goodse)  //右边数据渲染函数封装
        idList = [];
    }

右边框数据

    //右边选择框选择商品id
    var idRove=[] //已选择的商品id
    function callChange(id) {
        console.log("idRove",id)
        if (idRove.length == 0){
            idRove.push(id)
        }else {
            var checkid = idRove.some(item => {
                    return item == id
                })
            if (checkid){
                var index = idRove.indexOf(id);
                if(index > -1) {
                    idRove.splice(index,1);
                }
            }else {
                idRove.push(id)
            }
        }
        console.log(idRove)
    }

//通过获取带已选择的id进行过滤数据
//    商品取消选择
    function cancelButton() {
        //未选择商品数据
        var cancelList = goodse.filter(item2 => {
                return !(idRove.some(one2 => {
                    return one2 == item2.id
                }))
        });
        console.log("cancelList",cancelList)
//        console.log(cancelList)
        //再将未选择数据id进行过滤出来
        var IdsList=[] //未选择商品id
        //判断数据当数据===0时,将数据清空,不清空最后一个数据还会渲染
        if (cancelList.length == 0){
            goodse=[]
            $('.select-dates').html("")
        }else {
            //过滤未选择到的数据id
            $.each(cancelList, function (index, item) {
                console.log('daozheli')
                console.log(item)
                if (!!item.id) {
                    IdsList.push(item.id)
                }
//           var arr=IdsList.map(function(i){
//               return +i;
//           })
                //在总数据中将未选择的商品信息过滤出来进行相变渲染
                console.log(datalLsis, 'ssssss')
                var afterIdList = datalLsis.filter(item => {
//                   console.log(item)
                        return !(IdsList.some(one => {
//                       console.log('one',one)
                            return one == item.id
                        })
                )
            })
                ;
                console.log("afterIdList", afterIdList)
                createDOM(afterIdList)
                //再将已有的数据和右边框已选择的数据进行过滤渲染
                var canlList = goodse.filter(item2 => {
                        return !(idRove.some(one2 => {
                            return one2 == item2.id
                        }))
            });
                goodse = canlList
                afterDOM(canlList) 
            })
        }
        idRove=[] //id每选择一次就需要清空不然会重复
    }

添加首页

//    选择商品确定
    let goods_item=[]
    function addModal() {
        //去重渲染
        let ary = goodse;
        let obj = {};
        goodse=ary.reduce((curs,next)=>{
                obj[next.id]?"":obj[next.id]=true&& curs.push(next);
        return curs;
    },[]);
        $.each(goodse, function (index, item2) {
            var table = `<tr><td>${item2.title}${item2.goods_sn}</td><td><img style="width: 50px;height:50px;background: red" src="${item2.pic}"></td><td><input class="numberList" type="number" min="1" value="1" οninput="ValueNumber(this)" οnchange="getNumber(value,${item2.id})" /></td><td><a href="#" οnclick="removeList(${item2.id})">删除</a></td></tr>`
            $('.thead').append(table)
//               console.log(index,item2)
            getNumber(1,item2.id)
            goods_item=goodse
        })
        goodse = []
        afterDOM(goodse)
    }
    //商品删除
    function removeList(id) {
        $('.thead').html('')
        goods = goods.filter(item => item.id != id)
        goods_item = goods_item.filter(item2 => item2.id != id)
        console.log('bbb',goods_item)
        if(goods_item.length==0){$('.thead').html("")}else {
        $.each(goods_item, function (index, item2) {
//            console.log('item2',item2)
            var table = `<tr><td>${item2.title}${item2.goods_sn}</td><td><img style="width: 50px;height:50px;background: red" src="${item2.pic}"></td><td><input class="numberList" type="number" min="1" value="${item2.number}" οninput="ValueNumber(this)" οnchange="getNumber(value,${item2.id})" /></td><td><a href="#" οnclick="removeList(${item2.id});">删除</a></td></tr>`
            $('.thead').append(table)
        })
        }

    }

   // 限制礼品次数
function ValuemountA(obj) {
    if(obj.value<1){
        $(obj).val(1)
        alert("数量不能少于1")
        return
    }
}
//商品数量限制
function ValueNumber(obj) {
    if (obj.value<1){
        alert("数量不能少于1")
        $(obj).val(1)
        return
    }
}

  //添加提交
   function addDatas(){
        console.log(goods)
       $.post("/CustomGiftLimit/add.html",{
           title:$('#title').val(),
           min_price:$('#min_price').val(),
           max_price:$('#max_price').val(),
           frequency:$('#frequency').val(),
           goods:goods
       },function(result){
           if(result.status == 'success') {
               window.location.href="/CustomGiftLimit/index.html";
           }else {
               alert(result.msg);
           }
       });

    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YlFvdZFS-1570846953189)(C:\Users\一泓清泉天上游\AppData\Roaming\Typora\typora-user-images\1570846437586.png)]

      frequency:$('#frequency').val(),
       goods:goods
   },function(result){
       if(result.status == 'success') {
           window.location.href="/CustomGiftLimit/index.html";
       }else {
           alert(result.msg);
       }
   });

}
![132](https://img-blog.csdnimg.cn/20191028142619113.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RhMTU5NDE4NA==,size_16,color_FFFFFF,t_70)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值