var CONSTANT = {
// datatables常量
DATA_TABLES : {
DEFAULT_OPTION : { // DataTables初始化选项
LANGUAGE : {
sProcessing : "处理中...",
sLengthMenu : "每页 _MENU_ 项",
sZeroRecords : "没有匹配结果",
sInfo : "显示_START_ 至 _END_ 项,共 _TOTAL_ 项",
sInfoEmpty : "显示 0 至 0 项,共 0 项",
sInfoFiltered : "(由 _MAX_ 项结果过滤)",
sInfoPostFix : "",
sSearch : "搜索:",
searchPlaceholder : "关键字搜索",
sUrl : "",
sEmptyTable : "表中数据为空",
sLoadingRecords : "载入中...",
sInfoThousands : ",",
oPaginate : {
sFirst : "首页",
sPrevious : "上页",
sNext : "下页",
sLast : "末页"
},
oAria : {
sSortAscending : ": 以升序排列此列",
sSortDescending : ": 以降序排列此列"
}
},
// 禁用自动调整列宽
autoWidth : false,
// 为奇偶行加上样式,兼容不支持CSS伪类的场合
stripeClasses : [ "odd", "even" ],
// 取消默认排序查询,否则复选框一列会出现小箭头
order : [],
// 隐藏加载提示,自行处理
processing : false,
// 启用服务器端分页
serverSide : true,
// 禁用原生搜索
searching : false
},
COLUMN : {
// 复选框单元格
CHECKBOX : {
className: "td-checkbox",
orderable : false,
bSortable : false,
data : "id",
width : '16px',
render : function(data, type, row, meta) {
var content = '
content += ' ';
content += ' ';
content += '';
return content;
}
}
},
// 回调
CALLBACKS : {
// 表格绘制前的回调函数
PREDRAWCALLBACK : function(settings) {
if (settings.oInit.scrollX == '100%') {
// 给表格添加css类,处理scrollX : true出现边框问题
$(settings.nTableWrapper).addClass('dataTables_DTS');
}
},
INITCOMPLETE : function(settings, json) {
if (settings.oInit.scrollX == '100%' && $(settings.nTable).parent().innerWidth() - $(settings.nTable).outerWidth() > 5) {
$(settings.nScrollHead).children().width('100%');
$(settings.nTHead).parent().width('100%');
$(settings.nTable).width('100%');
}
}/*,
// 表格每次重绘回调函数
DRAWCALLBACK : function(settings) {
// 取消全选
$(":checkbox[name='keeperUserGroup-checkable']").prop('checked', false);
// 高亮显示当前行
$(settings.nTable).find("tbody tr").click(function(e) {
var box=$(e.target).parents('tr').find(":checkbox").is(':checked');// true 选中 false 没选中
if(box){
$(e.target).parents('tr').addClass('warning');
}else{
$(e.target).parents('tr').removeClass('warning');
}
$(e.target).parents('tr').find(":checkbox").prop('checked', !box);
});
},DRAWCALLBACKNEW : function(settings){
// 取消全选
$(":checkbox[name='keeperUserGroup-checkable']").prop('checked', false);
// 高亮显示当前行
$(settings.nTable).find("tbody tr").click(function(e) {
var box=$(e.target).parents('tr').find(":checkbox").is(':checked');// true 选中 false 没选中
if(box){
$(e.target).parents('tr').addClass('warning');
}else{
$(e.target).parents('tr').removeClass('warning');
}
$(e.target).parents('tr').find(":checkbox").prop('checked', !box);
});
}*/,DRAWCALLBACKSINGLE : function(settings){
/**全选反选触发事件*/
$(settings.nTable).find(":checkbox[name='keeperUserGroup-checkable']").click(function(e){
if($(this).prop('checked')){
table.$('tr').addClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', true);
}else{
table.$('tr').removeClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', false);
}
});
/**TR行事件*/
$(settings.nTable).find("tbody tr").click(function(e) {
//取消全选
$(settings.nTable).find(":checkbox[name='keeperUserGroup-checkable']").prop('checked', false);
//获取当前tr和checkbox元素,当前已选中
var tr = $(e.target).parents('tr');
var checkbox = $(e.target).parents('tr').find(":checkbox");
var checkedLen = $(settings.nTable).find("input:checkbox:checked").length;
//当期触发事件是checkbox
if($(e.target).is('input:checkbox')){
tr.toggleClass('warning selected');
return true;
}
//当前已选中多个只保留当前
if(checkedLen >= 2){
//激活当前行内checkbox
checkbox.prop('checked', !checkbox.prop('checked'));
tr.toggleClass('warning selected');
}else{
//清除非当前行内样式及checkbox
tr.siblings().removeClass('warning selected');
tr.siblings().find(":checkbox").prop('checked', false);
checkbox.prop('checked', true);
tr.addClass('warning selected');
}
});
},DRAWCALLBACKSINGLENEW : function(settings){
/**全选反选触发事件*/
$(settings.nTable).find(":checkbox[name='keeperUserGroup-checkable']").click(function(e){
if($(this).prop('checked')){
table.$('tr').addClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', true);
}else{
table.$('tr').removeClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', false);
}
vm.setType();
});
/**TR行事件*/
$(settings.nTable).find("tbody tr").click(function(e) {
//取消全选
$(settings.nTable).find(":checkbox[name='keeperUserGroup-checkable']").prop('checked', false);
//获取当前tr和checkbox元素,当前已选中
var tr = $(e.target).parents('tr');
var checkbox = $(e.target).parents('tr').find(":checkbox");
var checkedLen = $(settings.nTable).find("input:checkbox:checked").length;
//当期触发事件是checkbox
if($(e.target).is('input:checkbox')){
tr.toggleClass('warning selected');
vm.setType();
return true;
}
//当前已选中多个只保留当前
if(checkedLen >= 2){
//激活当前行内checkbox
checkbox.prop('checked', !checkbox.prop('checked'));
tr.toggleClass('warning selected');
}else{
//清除非当前行内样式及checkbox
tr.siblings().removeClass('warning selected');
tr.siblings().find(":checkbox").prop('checked', false);
checkbox.prop('checked', true);
tr.addClass('warning selected');
}
vm.setType();
});
},DRAWCALLBACKSINGLESCROLLX : function(settings){
/**全选反选触发事件*/
$(".dataTables_scrollHeadInner").find(":checkbox[name='keeperUserGroup-checkable']").click(function(e){
if($(this).prop('checked')){
table.$('tr').addClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', true);
}else{
table.$('tr').removeClass('warning selected');
$(settings.nTable).find('tbody tr input:checkbox').prop('checked', false);
}
vm.setType();
});
/**TR行事件*/
$(settings.nTable).find("tbody tr").click(function(e) {
//取消全选
$(settings.nTable).find(":checkbox[name='keeperUserGroup-checkable']").prop('checked', false);
//获取当前tr和checkbox元素,当前已选中
var tr = $(e.target).parents('tr');
var checkbox = $(e.target).parents('tr').find(":checkbox");
var checkedLen = $(settings.nTable).find("input:checkbox:checked").length;
//当期触发事件是checkbox
if($(e.target).is('input:checkbox')){
tr.toggleClass('warning selected');
vm.setType();
return true;
}
//当前已选中多个只保留当前
if(checkedLen >= 2){
//激活当前行内checkbox
checkbox.prop('checked', !checkbox.prop('checked'));
tr.toggleClass('warning selected');
}else{
//清除非当前行内样式及checkbox
tr.siblings().removeClass('warning selected');
tr.siblings().find(":checkbox").prop('checked', false);
checkbox.prop('checked', true);
tr.addClass('warning selected');
}
vm.setType();
});
}
},
// 常用render可以抽取出来,如日期时间、头像等
RENDER : {
ELLIPSIS : function(data, type, row, meta) {
data = data || "";
return '' + data + '';
}
}
}
};
if ($.fn.dataTable) {
$.extend($.fn.dataTable.defaults, {
processing : true,
order: [],
paging : true,
searching: true,
language : CONSTANT.DATA_TABLES.DEFAULT_OPTION.LANGUAGE,
preDrawCallback : CONSTANT.DATA_TABLES.CALLBACKS.PREDRAWCALLBACK,
initComplete : CONSTANT.DATA_TABLES.CALLBACKS.INITCOMPLETE,
drawCallback : CONSTANT.DATA_TABLES.CALLBACKS.DRAWCALLBACK
});
}