购物车数量加减价格变化
商城购物车
//加
```php
$('.plus').click(function () {
var current_number = $(this).prev().val();
if (current_number == 10){
return false;
}else{
var current_number = parseInt(current_number)+1;
$(this).prev().val(current_number);
}
//修改小计
var price = $(this).closest('ul').find('.price').text();
var sum = price * parseInt(current_number);
$(this).closest('ul').find('.sum').text(sum);
var id = $(this).closest('ul').find('.row_check').val();
//重新计算已选商品数量和金额
change_total();
//ajax
$.ajax({
url:'changeNumber',
type:'post',
data:{id:id,current_number:current_number},
success:function(res){
}
})
})
### //失焦事件
$('.current_number').blur(function () {
var current_number = $(this).val();
if (current_number <= 1){
current_number = 1;
$(this).val(current_number);
}else if (current_number >= 10){
current_number = 10;
$(this).val(current_number);
}
//修改小计
var price = $(this).closest('ul').find('.price').text();
var sum = price * parseInt(current_number);
$(this).closest('ul').find('.sum').text(sum);
var id = $(this).closest('ul').find('.row_check').val();
//ajax
$.ajax({
url:'changeNumber',
type:'post',
data:{id:id,current_number:current_number},
success:function(res){
})
})
### //全选
$('.check_all').change(function(){
//获取全选的选中状态 checked属性
$('.row_check').prop('checked',$(this).prop('checked'));
//重新计算已选商品数量和金额
change_total();
//修改选中状态到购物车数据中
var data = {
'id':'all',
'status':$(this).prop('checked') ? 1 : 0
};
//ajax
$.ajax({
url:'changestatus',
type:'post',
data:data,
success:function(res){
if (res.code != 200){
alert(res.msg);return;
}
}
})
})
### //单个选中状态
$('.row_check').click(function () {
//判断 全选是否应该选中
check_all();
//重新计算已选商品数量和金额
change_total();
//修改选中状态到购物车数据中
var data = {
'id':$(this).val(),
'status':$(this).prop('checked') ? 1 : 0
};
// ajax
$.ajax({
url:'changestatus',
type:'post',
data:data,
success:function(res){
if (res.code != 200){
alert(res.msg);return;
}
}
})
})
### //页面刷新,直接判断 全选是否应该选中
function check_all(){
//判断 选中的行数 和 总行数 是否相等
var status = $('.row_check:checked').length == $('.row_check').length;
//设置全选的选中状态 checked属性
$('.check_all').prop('checked',status);
}
//页面加载调用
check_all();
//重新计算已选中的商品价格、数量
function change_total() {
//获取到选中行 row_check选中的
var total_number = 0;
var total_price = 0;
$('.row_check:checked').each(function (i,v) {
total_number += parseInt($(v).closest('ul').find('.current_number').val());
total_price += parseFloat($(v).closest('ul').find('.sum').html());
});
//将累加的价格和数量放到页面中
$('#total_number').html(total_number);
$('#total_price').html('¥' + total_price);
};
//页面加载调用
change_total();
//删除
$('.delete').click(function () {
//获取id
var id = $(this).closest('ul').find('.row_check').val();
var that = $(this);
$.ajax({
url:'delcart',
data:{id:id},
type:'get',
datatype:'json',
success:function (res) {
if (res.code == 200){
$(that).closest('.cart-list').remove();
}
}
})
})
//结算页面
$(‘.sum-btn’).click(function () {
//获取选中的商品对应的长度
var checked_lenth = $(‘.row_check:checked’).length;
if (checked_lenth == 0){
alert(‘请选择一件商品’);
return false;
}
location.href = ‘getOrderInfo’;
})
## 控制器
* 修改商品选中状态
public static function xiustatus($data){
//判断是否登录
if (session('?user')){
//全部修改
if ($data['id'] == 0){
\app\home\model\Cart::where('user_id',session('user.id'))->update(['is_selected' => $data['status']]);
}else{
\app\home\model\Cart::where('id',$data['id'])->update(['is_selected' => $data['status']]);
}
return true;
}else{
return false;
}
}
```
修改商品的数量 * 修改商品的数量
public static function changeNumber($id,$current_number){
if (session('?user')){
\app\home\model\Cart::where('id',$id)->update(['number'=>$current_number]);
return true;
}else{
return false;
}
}
* 删除购物车商品
public static function delcart($id){
if (session('?user')){
\app\home\model\Cart::where('id',$id)->delete();
return true;
}else{
//未登录删除cookie
$data = json_decode(cookie('cart'),true) ? : [];
//$id 下标
unset($data[$id]);
//保存cookie
cookie('cart',json_encode($data),86400*7);
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接