-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.opentips.js
241 lines (207 loc) · 9.27 KB
/
jquery.opentips.js
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
//+----------------------------------------------------------------------
//| 功能:封装常用的alert,confirm,feedback功能.
//| 说明:基于jQuery,bootstrape对常用的modal操作进行封装,支持函数调用.
//| 参数:
//| 返回值:
//| 创建人:Devin Shen
//| 创建时间:2017-2-8
//+----------------------------------------------------------------------
$(function () {
window.DSModal = function () {
var reg = new RegExp("\\[([^\\[\\]]*?)\\]", 'igm');
var $obj = $("#ds-modal");
var feedback_html = "<div class='ds-tips dy-feedback'>" +
"<div class='fb-title'>" +
"[Title]" +
"<a class='fb-close' href='javascript:;'>" +
"<i class='icon-l icon-close'></i>" +
"</a>" +
"</div>" +
"<div class='fb-content'>" +
"<textarea class='dy-textarea' placeholder='[PlaceHolder]'></textarea>" +
"<div class='fb-btn'>" +
"<a class='dy-btn ok' href='javascript:;'>[BtnOk]</a>" +
"<a class='dy-btn cancel' href='javascript:;'>[BtnCancel]</a>" +
"</div>" +
"</div>" +
"</div>";
var alert_html = "<div class='ds-tips dy-tips'>" +
"<div class='dy-tips-content'>" +
"<div class='dy-tips-dialog'>" +
"<div class='dy-tips-body'>" +
"<!--信息提示-->" +
"[Msg]" +
"</div>" +
"</div>" +
"</div>" +
"</div>"
var confirm_html = "<div class='ds-tips dy-modal'>" +
"<div class='dy-modal-content'>" +
"<div class='dy-modal-dialog'>" +
"<div class='dy-modal-body'>" +
"<p class='dy-modal-p'>" +
"<!--置中 提示信息-->" +
"[Msg]" +
"</p>" +
"</div>" +
"<div class='dy-modal-footer'>" +
"<a class='btn btn-enter' href='javascript:;'>[BtnOk]</a>" +
"<a class='btn btn-cancel' href='javascript:;'>[BtnCancel]</a>" +
"</div>" +
"</div>" +
"</div>" +
"</div>"
/* demo
//feedback
<div class="ds-tips dy-feedback">
<div class="fb-title">
[Title]
<a class="fb-close" href="javascript:;">
<i class="icon-l icon-close"></i>
</a>
</div>
<div class="fb-content">
<textarea class="dy-textarea" placeholder="[PlaceHolder]"></textarea>
<div class="fb-btn">
<a class="dy-btn ok" href="javascript:;">[BtnOk]</a>
<a class="dy-btn cancel" href="javascript:;">[BtnCancel]</a>
</div>
</div>
</div>
//alert
<div class="ds-tips dy-tips">
<div class="dy-tips-content">
<div class="dy-tips-dialog">
<div class="dy-tips-body">
<!--信息提示-->
[Msg]
</div>
</div>
</div>
</div>
//confirm
<div class="ds-tips dy-modal">
<div class="dy-modal-content">
<div class="dy-modal-dialog">
<div class="dy-modal-body">
<p class="dy-modal-p">
<!--置中 提示信息-->
[Msg]
</p>
</div>
<div class="dy-modal-footer">
<a class="btn btn-enter" href="javascript:;">[BtnOk]</a>
<a class="btn btn-cancel" href="javascript:;">[BtnCancel]</a>
</div>
</div>
</div>
</div>
*/
var modal_type = {
alert: 1,
confirm: 2,
feedback: 3
};
var _alert = function (options) {
var that = $obj;
var html = _replace(alert_html, options, modal_type.alert);
that.html(html);
that.$tips = that.find(".ds-tips.dy-tips");
var type = true, time = 2000;
if (typeof options.type == "boolean") {
type = options.type;
}
if (options.time && typeof options.time == "number") {
time = options.time;
}
var closetips = function () {
that.$tips.removeClass("success false open");
};
if (type) {
that.$tips.removeClass("success false open").addClass("open success");
if (time > 0) setTimeout(closetips, time);
}
else {
that.$tips.removeClass("success false open").addClass("open false");
if (time > 0) setTimeout(closetips, time);
}
};
var _confirm = function (options) {
var that = $obj;
var html = _replace(confirm_html, options, modal_type.confirm);
that.html(html);
that.$confirm = that.find(".ds-tips.dy-modal");
that.$confirm.$ok = that.$confirm.find(".btn-enter");
that.$confirm.$cancel = that.$confirm.find(".btn-cancel");
var closemodal = function () {
that.$confirm.removeClass("open");
};
that.$confirm.removeClass("open").addClass("open");
return {
on: function (ok_callback, cancel_callback) {
if (ok_callback && ok_callback instanceof Function) {
that.$confirm.$ok.on('click', ok_callback);
}
if (cancel_callback && cancel_callback instanceof Function) {
that.$confirm.$cancel.on('click', cancel_callback);
}
else {
that.$confirm.$cancel.on('click', closemodal);
}
}
};
};
var _feedback = function (options) {
var that = $obj;
var html = _replace(feedback_html, options, modal_type.feedback);
that.html(html);
that.$feedback = that.find(".ds-tips.dy-feedback");
that.$feedback.$content = that.$feedback.find(".dy-textarea");
that.$feedback.$ok = that.$feedback.find(".dy-btn.ok");
that.$feedback.$cancel = that.$feedback.find(".dy-btn.cancel");
var closefeedback = function () {
that.$feedback.removeClass("open");
};
that.$feedback.find(".fb-close").on('click', closefeedback);
that.$feedback.removeClass("open").addClass("open");
return {
on: function (ok_callback, cancel_callback) {
if (ok_callback && ok_callback instanceof Function) {
that.$feedback.$ok.on('click', ok_callback);
}
if (cancel_callback && cancel_callback instanceof Function) {
that.$feedback.$cancel.on('click', cancel_callback);
}
else {
that.$feedback.$cancel.on('click', closefeedback);
}
}
};
};
var _replace = function (html, options, type) {
var ops = {
msg: "提示内容",
title: "操作提示",
btnok: "确定",
btncl: "取消",
placeholder: "请填写你的问题,我将尽快进行回复!"
};
$.extend(ops, options);
var new_html = html.replace(reg, function (node, key) {
return {
Title: ops.title,
PlaceHolder:ops.placeholder,
Msg: ops.msg,
BtnOk: ops.btnok,
BtnCancel: ops.btncl
}[key];
});
return new_html;
};
return {
alert: _alert,
confirm: _confirm,
feedback: _feedback
}
}();
});