微信小程序,这里实现微信小程序checkbox,有需要此功能的朋友可以参考下。

摘要: 加减商品数量,汇总价格,全选与全不选

设计思路:

一、从网络上传入以下Json数据格式的数组  1.标题title 2.图片地址 3.数量num 4.价格price  5.是否选中selected

二、点击复选框toggle操作 如已经选中的,经点击变成未选中,反之而反之 点击依据index作为标识,方便遍历

三、全选操作 首次点击即为全部选中,再次点击为全不选,全选按钮本身也跟随toggle变换

四、点击结算按钮,将已选中的数组取出,以供通过网络提交到服务端,这里给个toast作为结果演示。

五、利用stepper作加减运算,同样依据index作为标识,点完写回num值。

六、布局,全选与结算按钮底部对齐,购物车商城自适应高度,类似于Android的weight。

步骤:

初始数据渲染

1.1 布局与样式表

上方是一个商品列表,下方是一个全选按钮与立即结算按钮

商品列表左部为商品缩略图,右上为商品标题,右下为商品价格与数量,

先看一下效果图:

       

页面代码如图:

<view wx:for="{{carts}}" class="carts-item" data-title="{{item.title}}" data-url="{{item.url}}" bindtap="bindViewTap">
<view class="my-wrap"> <view class="my-tlt">
{{item.title}}
</view>
<view class="my-list bordernone">
<icon wx:if="{{item.selected}}" type="success_circle" size="20" bindtap="bindCheckbox" data-index="{{index}}" class="my-check"/>
<icon wx:else type="circle" size="20" bindtap="bindCheckbox" data-index="{{index}}" class="my-check"/>
<image src="{{item.image}}" class="my-pic" mode="aspectFill"></image>
<view class="my-left">
<view class="my-title"> K金砖玉石电视背景墙砖</view>
<text class="my-txt">尺寸:800X800</text>
<view class="my-bnt">

<!-- 减号 -->
<text class="{{minusStatuses[index]}} bnt" data-index="{{index}}" bindtap="bindMinus">-</text>
<!-- 数值 -->
<input type="number" bindchange="bindManual" class="int" value="{{item.num}}" />
<!-- 加号 -->
<text class="normal bnt" data-index="{{index}}" bindtap="bindPlus">+</text>]

</view>
</view>
<view class="my-right">
<icon class="iconfont del"/>
<text class="gay">¥{{item.price}}</text>
</view>
</view>
</view>

<view class="float">

<!-- 全选 -->
<view bindtap="bindSelectAll" class="my-sel" >
<icon wx:if="{{selectedAllStatus}}" type="success_circle" size="20" class="l-mycheck"/>
<icon wx:else type="circle" size="20" class="l-mycheck"/>
<text>全选</text>
</view>
<view class="my-rightbox">
<view class="my-count" data='{{sep}}'>

<!-- 统计 -->
合计(不含运费):¥<text>{{count}}</text>
</view>
<view class="my-bnts" bindtap="setPayment" >
结算(<text>{{number}}</text>)
</view>
</view>
</view>

这里css自己去写,这里不做多介绍,只做效果:

首先:先定义js

在page.data里面

count:0,
number:0,
minusStatuses: ['disabled', 'disabled', 'normal', 'normal', 'disabled'],
carts: [
{title:'自营商城',image:'../images/my.png',num:'1',price:'198.0',selected:false},
{title:'自营商城',image:'../images/my.png',num:'1',price:'100.0',selected:false},
{title:'自营商城',image:'../images/my.png',num:'3',price:'15.0',selected:false},
{title:'自营商城',image:'../images/my.png',num:'2',price:'15.2',selected:false},
{title:'自营商城',image:'../images/my.png',num:'1',price:'122.0',selected:true},
],

carts这个你可以通过url自己传参,我这里自己写点数据,

js代码bindMinus、bindPlus分别改造为如下:

bindMinus: function(e) {
var index = parseInt(e.currentTarget.dataset.index);

var num = this.data.carts[index].num;

if (num > 0) {
num --;
}
var minusStatus = num <= 0 ? 'disabled' : 'normal';
var carts = this.data.carts;
carts[index].num = num;

var minusStatuses = this.data.minusStatuses;
minusStatuses[index] = minusStatus;

this.setData({
carts: carts,
minusStatuses: minusStatuses
});
},
bindPlus: function(e) {
var index = parseInt(e.currentTarget.dataset.index);
var num = this.data.carts[index].num; 
num ++;
var minusStatus = num <= 1 ? 'disabled' : 'normal';
var carts = this.data.carts;
carts[index].num = num;

var minusStatuses = this.data.minusStatuses;
minusStatuses[index] = minusStatus;

this.setData({
carts: carts,
minusStatuses: minusStatuses
});
},

单选:这里需要判断一下已选状态,一般购物车勾选状态是记录在网络的。index值用于传值js,遍历之用。

bindCheckbox: function(e) {
  var index = parseInt(e.currentTarget.dataset.index);
  var selected = this.data.carts[index].selected;
  var carts = this.data.carts;
var num = parseInt(this.data.carts[index].num); 
var price=this.data.carts[index].price; 
if(!selected){
this.setData({
count:this.data.count+ num*price,
number:num+this.data.number

});
}else{
this.setData({
count:this.data.count- num*price,
number:this.data.number-num

});
}

carts[index].selected = !selected;
 
  this.setData({
    carts: carts
  });
},

全选与全不选事件

实现bindSelectAll事件,改变全选状态

首先定义一个data值,以记录全选状态

selectedAllStatus: false

事件实现:

bindSelectAll: function() {
var selectedAllStatus = this.data.selectedAllStatus;
selectedAllStatus = !selectedAllStatus;
var carts = this.data.carts;
if(!selectedAllStatus){
for (var i = 0; i < carts.length; i++) {
carts[i].selected = selectedAllStatus;
var num = parseInt(this.data.carts[i].num); 
var price=parseInt(this.data.carts[i].price); 
this.setData({
count:this.data.count-num*price,
number:this.data.number-num

});
}
}

我这里下面结算是底部悬浮固定,有什么问题请多指导,

标签:  微信小程序全选,  微信小程序checkbox,  微信小程序购物车

微信小程序全选,微信小程序checkbox,微信小程序购物车相关推荐

  1. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.5 可移动容器及可移动区域,以及如何实现侧滑删除功能

    一.学习使用moveable-view与movable-area组件 1.1 关于元素的定位 static 静态定位 元素在页面流动的当前位置定位,这个时候它的top.left.right.botto ...

  2. 原生js做购物车全选选中商品显示价格和小计的计算

    html代码 <div class="contain"><table class="table table-bordered">< ...

  3. 前端小demo——全选和全不选

    模拟购物车,实现全选或者全不选,或者其中任意一件单品单选的效果. 点击顶部复选框实现全选 列表中任意一项未选中,顶部复选框就是未选中的状态 <!DOCTYPE html> <html ...

  4. 每天一个js小demo --全选与反选

    如图所示 点击全选的时候是全选,点击全不选的时候是全不选,点击反选的时候是反选,这话说的感觉和说了话是的,哈哈哈哈 直接上 代码 <body><form action="& ...

  5. react 全选反选_react解决checkbox全选checked的问题

    react解决checkbox全选checked的问题 日期:2018-08-23 来源:程序思维浏览:2117次 今天在做react后台管理系统需要批量删除功能,没想到checkbox在react里 ...

  6. 购物车分店铺,全选,店铺全选,计算,增加商品,APP购物车,类似淘宝购物车

    基于vue <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. JQuery全选反选 随其他checkbox自动勾选全选反选

    工作中的代码片段 写出来留作以后对比参考 网上没找到自己想要的全选反选代码 干脆自己写了个比较臃肿的 相信还有更加简单的方法 jquery代码 ============================ ...

  8. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.10 image组件,如何实现图片懒加载?

    一.与image组件有关的技术问题 1.1 什么是WebP? webp是image组件的一个boolean属性,开启这个属性之后,代表url可以设置webp这种格式的图片.webP是一种同时提供了有损 ...

  9. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.3 rich-text 组件,以及如何单击预览它的节点图片并保存

    一.rich-text组件 nodes: [{name: 'div',attrs: {class: 'div_class',style: 'line-height: 20px;padding:20px ...

最新文章

  1. java string改变的影响_为什么Java的string类要设成immutable(不可变的)
  2. 给JFinal添加 Sqlite 数据库支持
  3. pytorch教程龙曲良11-15
  4. asp.net core中使用cookie身份验证
  5. c语言 三个小球排排坐,关颖三个孩子排排坐 太萌啦
  6. jsp分页功能的位置有可能会影响到翻页时的查询条件
  7. asp.net 动态生成二维码加文字描述或者二维码加logo
  8. 一级计算机基础试题答案,计算机一级计算机基础试题及答案
  9. UE4 - 默认鼠标指针的样式修改自定义
  10. Java---计算器(标准计算器,科学计算器)的实现
  11. 初写数学建模论文 -- 摸鱼1
  12. 库存管理 库存管理软件榜单 库存管理软件排名 库存管理提高效率的办法
  13. HBase项目之微博系统
  14. Japanese的意思
  15. 回想那些年我抛弃的技术
  16. 数理统计中95%置信区间的含义
  17. 逆向教程-U3D游戏逆向分析(伊甸逆向分析)
  18. IC - 什么是数字IC设计?
  19. 女程序员在公司受到的待遇有什么不一样?
  20. 【Excle数据透视表】如何让字段标题不显示“求和项”

热门文章

  1. 【论文阅读】2021年牛津大学的 Survey:Recent Advances in Reinforcement Learning in Finance
  2. SAP BP 业务实践与ABAP 分享
  3. Java,Android,计算机原理视频,500G视频资料
  4. Java基础案例2-6:登录注册小程序
  5. 数字电子技术《优先编码器74LS148》仿真
  6. PowerPoint课件动画制作三例
  7. JavaScript对象的键值对
  8. Android开发-Handler引起的内存泄漏-实验、分析、总结。
  9. 我想建立网站,网站搭建需要哪些大体步骤?
  10. 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(三)