forked from zjs352/layuiTablePlug
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestTableCheckboxDisabled.html
More file actions
311 lines (287 loc) · 12.8 KB
/
testTableCheckboxDisabled.html
File metadata and controls
311 lines (287 loc) · 12.8 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
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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title>tablePlug</title>
<link rel="stylesheet" href="layui/src/css/layui.css" media="all">
<style>
.layui-form-label {
width: 100px;
}
.layui-table-view tbody tr.layui-table-selected {
background-color: hotpink;
}
.layui-table-view tbody tr.layui-table-selected.layui-table-hover {
background-color: lightpink;
}
.table_th_search + div.layui-table-view .layui-table-header div.layui-table-cell {
height: auto;
}
</style>
</head>
<!--<body class="layui-container">-->
<body>
<div class="layui-row layui-col-space10">
<div class="layui-col-xs12" style="margin-top: 10px;">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">是否跨页记录</label>
<div class="layui-input-inline">
<input type="checkbox" name="status" lay-skin="switch" checked="checked" lay-filter="statusSwitch">
</div>
<div class="layui-input-inline">
<span class="layui-btn layui-btn-sm layui-btn-danger" onclick="resetCheckboxStatus(this)" data-id="demo">重置选中状态</span>
</div>
</div>
</div>
<!--<div id="demo" class="table_th_search" lay-filter="test"></div>-->
<div id="demo" class="table_th_search" lay-filter="test"></div>
</div>
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script type="text/html" id="moveBar">
<a class="layui-btn layui-btn-xs" lay-event="moveUp"><i class="layui-icon layui-icon-up"></i>上移</a>
<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="moveDown"><i class="layui-icon layui-icon-down"></i>下移</a>
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container layui-inline">
<span class="layui-btn layui-btn-sm" lay-event="getChecked">获得选中的数据</span>
<span class="layui-btn layui-btn-sm" lay-event="deleteSome">批量删除</span>
<span class="layui-btn layui-btn-sm layui-btn-warm" lay-event="jump" data-page="1">第1页</span>
<span class="layui-btn layui-btn-sm layui-btn-warm" lay-event="jump" data-page="2">第2页</span>
<span class="layui-btn layui-btn-sm layui-btn-warm" lay-event="reload" data-url="data_none">无数据</span>
<span class="layui-btn layui-btn-sm layui-btn-primary" lay-event="reload">重载</span>
<span class="layui-btn layui-btn-sm layui-btn-primary" lay-event="setDisabled">设置10003,10004,10010不可选</span>
<span class="layui-btn layui-btn-sm layui-btn-primary" lay-event="setDisabledNull">取消不可选</span>
<span class="layui-btn layui-btn-sm" lay-event="openSelect">弹出选择</span>
<span class="layui-btn layui-btn-sm" lay-event="openIframeSelect">弹出iframe选择</span>
<!--<span class="layui-btn layui-btn-sm layui-btn-primary" lay-event="ranksConversion">行列转换</span>-->
</div>
<div class="layui-inline">
<span><span style="color: red;">※</span>url模式测试用的是json文件所以翻页请用这里按钮,不要用table的中的laypage组件,实际开发中不会有这个问题</span>
</div>
</script>
<script src="layui/src/layui.js"></script>
<!--<script src="layui/release/zip/layui-v2.4.5/layui/layui.all.js"></script>-->
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
layui.config({base: 'test/js/'})
.use(['testTablePlug'], function () {
var $ = layui.jquery
, layer = layui.layer //弹层
, form = layui.form //弹层
, table = layui.table //表格
, tablePlug = layui.tablePlug; //表格插件
// 当前这个测试页面测试的重点不是智能重载,所以关掉该功能,实际上该功能也是默认关闭的,可以不执行下面这句代码,也可以强制指定。
tablePlug.smartReload.enable(true);
// 处理操作列
var fn1 = function (field) {
return function (data) {
// return data[field];
return [
'<select>',
'<option value="1" >北京</option>',
'<option value="11" >天津</option>',
'<option value="2" >上海</option>',
'<option value="3" >广州</option>',
'<option value="4" >深圳</option>',
'<option value="5" >佛山</option>',
'</select>'
].join('');
};
};
var laytpl = layui.laytpl;
var tplTemp = '你好! <%d.name%>';
var layuiTpl = function (template, data, callback, open, close) {
laytpl.config({
open: open || '{{',
close: close || '}}'
});
var htmlTemp = laytpl(template).render(data, callback);
laytpl.config({
open: '{{',
close: '}}'
});
return htmlTemp;
};
layer.msg(layuiTpl(tplTemp, {name: 'Layui'}, null, '<%', '%>'));
table.render({
elem: '#demo'
// , height: 'full-200'
, size: 'lg'
, url: 'json/data11.json' //数据接口
// , data: data
, title: '用户表'
, page: {} //开启分页
, loading: true
, toolbar: '#toolbarDemo' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
, totalRow: true //开启合计行
, cellMinWidth: 90
// 是否开启字段筛选的记忆功能,支持true/false/'local'/'session'/其他 开启的情况下默认是session,除非显式的指定为'local'
, colFilterRecord: true
// 开启智能重载
, smartReloadModel: true
// 设置开启部分选项不可选
, checkDisabled: {
enabled: true,
primaryKey: 'id',
data: [10000, 10001, 10002, 10003, 10004, 10005, 10009]
}
// , pageLanguage: 'zh-TW' // 需要自己定义对应的文本
// , pageLanguage: 'en' // tablePlug里面已经定义了,如果觉得不满意可以用tablePlug.set去更新默认的配置;
// , pageLanguage: true // 无效的设置方式,只支持字符串或者对象的
// 也可以针对某个表格有特殊的配置如下面对象的设置方法,但是如果没有必要单独的自定义建议使用直接赋值成语言名称的字符串形式
, pageLanguage: {
lan: 'en',
// 可自定义text,lan为en的情况下
text: {
// jumpTo: 'jump to', // 到第
// page: 'page', // 页
// go: 'go', // 确定
// total: 'total', // 共
unit: 'item' // 条(单位,一般也可以不填)
// optionText: 'limit each page' // 条/页
}
}
, done: function () {
var tableView = this.elem.next();
tableView.find('.layui-table-grid-down').remove();
var totalRow = tableView.find('.layui-table-total');
var limit = this.page ? this.page.limit : this.limit;
layui.each(totalRow.find('td'), function (index, tdElem) {
tdElem = $(tdElem);
var text = tdElem.text();
if (text && !isNaN(text)) {
text = (parseFloat(text) / limit).toFixed(2);
tdElem.find('div.layui-table-cell').html(text);
}
});
// table.eachCols(this.id, function (index, col) {
// if (col.search && col.field && !tableView.find('th[data-field="'+col.field+'"]').find('div.layui-table-cell').find('.layui-table-th-search').length) {
// tableView.find('th[data-field="'+col.field+'"]').find('div.layui-table-cell').append('<br><input class="layui-input layui-table-th-search">');
// }
// })
},
parseData: function (ret) {
return {
code: ret.code,
msg: ret.msg,
count: ret.data ? (ret.data.total || 0) : 0,
data: ret.data ? (ret.data.list || []) : []
}
}
, checkStatus: {}
, autoSort: false
, initSort: {
field: 'id' //排序字段,对应 cols 设定的各字段名
, type: 'asc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
}
, cols: [
[
{type: 'checkbox', fixed: 'left', rowspan: 2},
{type: 'numbers', fixed: 'left', rowspan: 2},
{
field: 'id',
title: 'ID',
filter: true,
width: 80,
sort: true,
fixed: 'left',
totalRowText: '平均:',
rowspan: 2
},
{title: '基本信息', colspan: 2, align: 'center'},
{title: '详细信息', colspan: 6, align: 'center'},
{
fixed: 'right',
type: 'toolbar',
field: 'toolbar_move',
title: '',
width: 150,
align: 'center',
toolbar: '#moveBar',
rowspan: 2
},
{
fixed: 'right',
type: 'toolbar',
field: 'toolbar_common',
title: '操作',
width: 90,
align: 'center',
toolbar: '#barDemo',
rowspan: 2
}
]
, [ //表头
{field: 'username', title: '姓名', hideable: false}
, {field: 'sex', title: '性别', width: 90, filter: true, sort: true}
, {field: 'experience', title: '积分', width: 90, sort: true, totalRow: true}
, {field: 'score', title: '评分', edit: true, event: 'editField', width: 90, sort: true, totalRow: true}
, {field: 'city', title: '城市', search: true, width: 150, templet: fn1('city')}
, {field: 'sign', title: '签名', width: 200}
, {field: 'classify', title: '职业', filter: true, width: 100}
, {field: 'wealth', title: '财富', width: 135, filter: true, sort: true, totalRow: true}
]
]
});
//监听排序事件
table.on('sort(test)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
// console.log(obj.field); //当前排序的字段名
// console.log(obj.type); //当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序)
// console.log(this); //当前排序的 th 对象
//尽管我们的 table 自带排序功能,但并没有请求服务端。
//有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序,如:
table.reload('demo', {
initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。
, where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
field: obj.field //排序字段
, order: obj.type //排序方式
}
});
// layer.msg('服务端排序。order by '+ obj.field + ' ' + obj.type);
});
// 监听编辑如果评分负数给回滚到修改之前并且弹出提示信息并且重新获得焦点等待输入
table.on('edit(test)', function (obj) {
var tableId = obj.tr.closest('.layui-table-view').attr('lay-id');
var trIndex = obj.tr.data('index');
var that = this;
var tdElem = $(that).closest('td');
var field = obj.field;
var value = obj.value;
if (field === 'score') {
value = parseInt(value);
if (value < 0) {
setTimeout(function () {
// 小于0回滚再次获得焦点打开
obj.update({score: table._dataTemp[tableId][trIndex][field]});
layer.msg('评分不能为负数!', {anim: 6});
tdElem.click();
}, 100);
}
}
});
// tr点击触发复选列点击
$(document).on('click', '.layui-table-view tbody tr', function (event) {
var elemTemp = $(this);
var tableView = elemTemp.closest('.layui-table-view');
var trIndex = elemTemp.data('index');
tableView.find('tr[data-index="' + trIndex + '"]').find('[name="layTableCheckbox"]+').last().click();
})
// .on('click', '.layui-table-view tbody tr [name="layTableCheckbox"]+', function (event) {
// layui.stope(event);
// });
});
</script>
</body>
</html>