stepper.js
4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* [购物车] 修改商品数量
* @author: jinhu.dong<jinhu.dong@yoho.cn>
* @date: 2016/07/11
* @module shopping/stepper
*/
var Util = require('./util');
var $ = require('yoho-jquery');
var Stepper = {
/*
* 减少商品数量
* @function [decrease]
* @params { String } goodType 商品类型
* @params { String } sku 商品sku
* @params { String } currNum 商品当前购买数量
*/
decrease: function(goodType, sku, currNum) {
if (parseInt(currNum, 10) <= 1) {
// return callback(1);
} else {
Util.ajax({
url: '/shopping/cart/product/change_num',
type: 'POST',
data: {
changeType: 'DECREASE',
sku: sku,
goodType: goodType
},
success: function(res) {
Util.refreshCart(res, function() {
Stepper.init();
});
}
});
}
},
/*
* 增加商品数量
* @function [increase]
* @params { String } goodType 商品类型
* @params { String } sku 商品sku
*/
increase: function(goodType, sku) {
Util.ajax({
url: '/shopping/cart/product/change_num',
type: 'POST',
data: {
changeType: 'INCREASE',
sku: sku,
goodType: goodType
},
success: function(res) {
Util.refreshCart(res, function() {
Stepper.init();
});
}
});
},
/*
* 初始化
* @function [init]
*/
init: function() {
var _this = this,
$target,
sku,
goodType;
var steppers = $('.stepper'),
$input,
currNum,
minus,
plus;
// 数量为1的不能再减少
steppers.find('input').each(function() {
$input = $(this);
if ($(this).val() === '1') {
$input.parent().prev().addClass('disable');
}
});
// 减少
steppers.on('click', '.minus', function() {
$target = $(this);
$input = $target.next().find('input');
currNum = $input.val();
plus = $input.parent().next();
if (!$target.hasClass('disable') && !$target.parents('.cart-pro-list').hasClass('invalid-pros')) {
sku = $.parseJSON($target.parents('ul').children().first().attr('data-product_info')).product_sku;
goodType = $target.parent().attr('data-producttype');
_this.decrease(goodType, sku, currNum, function(num, changed) {
if (num === 1) {
$input.val(1);
$target.addClass('disable');
} else {
$input.val(num);
}
// 如果plus被灰化了
if (changed && plus.hasClass('disable')) {
plus.removeClass('disable');
}
});
}
});
// 增加
steppers.on('click', '.plus', function() {
$target = $(this);
$input = $target.prev().find('input');
currNum = $input.val();
minus = $input.parent().prev();
if (!$target.hasClass('disable') && !$target.parents('.cart-pro-list').hasClass('invalid-pros')) {
sku = $.parseJSON($target.parents('ul').children().first().attr('data-product_info')).product_sku;
goodType = $target.parent().attr('data-producttype');
_this.increase(goodType, sku, currNum, function(num, changed, overflow) {
if (overflow) {
$target.addClass('disable');
}
$input.val(num);
// 如果minus被灰化了
if (changed && minus.hasClass('disable')) {
minus.removeClass('disable');
}
});
}
});
}
};
module.exports = Stepper;