area-dialog-1.0.0.js
3.53 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
(function() {
var e = function(i, s, n, d) {
this.init(i, s, n, d);
};
e.pos = null;
e.title = '';
e.content = '';
e.dialog = null;
e.areas = [];
e.prototype = {
init : function(i, s, n, d) {
e.pos = i;
e.title = s;
e.content = n;
for (k in d.group) {
var a = d.group[k].areas;
for (j in a) {
e.areas[a[j].code] = a[j].title
}
}
},
show : function() { // 显示弹出框
var a = this;
y = $(this).scrollTop() - 300,
x = $(e.pos).offset().left - 315;
e.dialog = $(e.pos).dialog({
title: e.title,
source: e.content,
width:620,
extendMainClass: 'dialog-areas',
type:"html",
closeButton: true,
x: x,
y: y,
});
// 下面这两行代码,要在弹出框的内容加载完成以后才会有效
this.setDefault(); // 设置默认值
this.unbindClick(); // 解绑点击事件,避免重复绑定
this.bindClick(); // 绑定弹出框里面的点击事件
},
close : function() { // 关闭弹出框
e.dialog.close();
},
submit : function() {
var a = this;
var newCheckAreas = [];
$('.J_Province:checked').each(function(i, n){
newCheckAreas.push($(n).val())
});
var d = a.changeCode(newCheckAreas);
$(e.pos).next('.area-group').html(d.join(','))
$(e.pos).siblings('input').val(newCheckAreas.join(','))
a.close();
},
bindClick : function() {
var a = this;
$("body").on("click", ".J_Cancel", // click事件用on可以解决
function() {
a.close();
}
)
$("body").on("click", ".J_Submit",
function() {
a.submit();
}
)
$("body").on("click", ".J_Group",
function() {
var o = this,
c = $(o).prop("checked"),
a = $(o).val().split(",");
$.each(a, function(n, v) {
if (!$("#J_Province_" + v).prop("disabled")) {
$("#J_Province_" + v).prop("checked", c);
}
})
}
)
},
unbindClick : function() {
$("body").off("click", ".J_Cancel");
$("body").off("click", ".J_Submit")
$("body").off("click", ".J_Group")
},
changeCode : function (t) {
var a = this,
n = [];
for (i in t) {
n.push(e.areas[t[i]])
}
return n;
},
setDefault : function () {
// 设置当前rule的弹出框默认选中省份
var v = $(e.pos).siblings('input').val();
v = v ? v.split(',') : [];
if (v.length) {
$('.J_Province').each(function(i, o) { // 这里获取不到.J_Province,因为第一次弹出,代码运行到这里,弹出框里的加载内容还没有出来
if ($.inArray($(o).val(), v) !== -1) {
$(o).prop('checked', true);
}
})
}
// 把其他rule选中省份disabled
var d = [],
i = $(e.pos).parents('tr')[0],
targetName = $(e.pos).siblings('input').prop('name');
s = $('.J_Checked_Provinces').not('input[name='+targetName+']');
s && s.each(function(){
var j = $(this).val();
j = j ? j.split(',') : [];
if (j.length) {
d = d.concat(j)
}
})
if (d.length) {
$('.J_Province').each(function(i, o) {
if ($.inArray($(o).val(), d) !== -1) {
$(o).prop('disabled', true);
}
})
}
// 如果地区所有省份都选择,地区也被disable
$('.J_Group').each(function(i, o) {
var i = $(o).val(),
a = $(o).parents('.ecity')[0],
b = $(a).siblings('.province-list').find('.J_Province'),
c = [];
$(b).each(function(){
if ($(this).prop('disabled')) {
c.push($(this).val());
}
})
c = c.join(",");
if (c == i) {
$(o).prop('disabled', true)
}
})
}
}
window.AreaDialog = e
})();