1 var tableMultiple = { 2 checkDataArr: [], 3 checkId:'', 4 inputCheckFunc: function (tableWrapDoms, id, singleCheck) {//tableWrapDoms-包裹固定表格的dom 、id-用于识别数据的唯一id 、singleCheck-单选 5 var _this = this; 6 _this.checkId = id; 7 //表格选中行 8 var tableAllSelected = false; 9 var userAgent = navigator.userAgent.toLowerCase(); 10 var tableWrapDom = $(tableWrapDoms); 11 tableWrapDom.on('click', '.left-table tr td:first-child', function () { 12 var _index = $(this).parent().index(); 13 var checkbox = $(this).find('input[type="checkbox"]'); 14 var spreadCheck = JSON.parse(unescape($(this).parent('tr').attr('attr'))); 15 if (!checkbox.prop("disabled")) { 16 if ($(this).parent().hasClass('selected-bg')) {//不选中 17 $(this).parent().removeClass('selected-bg'); 18 tableWrapDom.find('.right-table tbody tr').eq(_index).removeClass('selected-bg'); 19 checkbox.prop('checked', false); 20 spreadCheck['Checked'] = false; 21 } else {//选中 22 $(this).parent().addClass('selected-bg'); 23 tableWrapDom.find('.right-table tbody tr').eq(_index).addClass('selected-bg'); 24 checkbox.prop('checked', true); 25 spreadCheck['Checked'] = true; 26 if (singleCheck) { 27 $(this).parent('tr').sinblings().removeClass('selected-bg').find('input[type="checkbox"]').prop('checked', false); 28 tableWrapDom.find('.right-table table tbody tr').removeClass('selected-bg'); 29 tableWrapDom.find('.right-table table tbody tr').eq(_index).addClass('selected-bg'); 30 } 31 } 32 } 33 _this.spreadMultipleFunc(spreadCheck) 34 var checkLength = tableWrapDom.find('tbody input[type="checkbox"]:checked').length; 35 var notDsiable = tableWrapDom.find('tbody input[type="checkbox"]:not(:disabled)').length; 36 if (notDsiable == 0) { 37 tableAllSelected = false 38 } else { 39 $('table th input').prop('checked', checkLength == notDsiable ? tableAllSelected = true : tableAllSelected = false); 40 } 41 }); 42 //全选 43 tableWrapDom.on('click', '.left-table table th input', function () { 44 _this.checkAllCommonFunc($(this), tableWrapDom, tableAllSelected); 45 }); 46 tableWrapDom.on('dblclick', '.left-table table th input', function () { 47 if (userAgent.match(/edge\/([\d.]+)/) || userAgent.match(/(msie\s|trident.*rv:)([\w.]+)/)) { 48 _this.checkAllCommonFunc($(this), tableWrapDom, tableAllSelected); 49 } 50 }); 51 }, 52 checkAllCommonFunc: function ($this, tableWrapDom, tableAllSelected) { 53 var _this = this; 54 var checkList = tableWrapDom.find('input[type="checkbox"]:not(:disabled)'); 55 var selectedAllData = []; 56 if ($this.prop('checked')) { 57 checkList.prop('checked', true); 58 checkList.parent().parent().addClass('selected-bg'); 59 tableWrapDom.find('.right-table tbody tr').addClass('selected-bg'); 60 tableWrapDom.find('.left-table table tbody tr.selected-bg').each(function () { 61 var spreadCheck = JSON.parse(unescape($(this).attr('attr'))); 62 spreadCheck['Checked'] = true; 63 selectedAllData.push(spreadCheck); 64 }); 65 _this.spreadMultipleFunc(selectedAllData); 66 } else { 67 checkList.prop('checked', false); 68 checkList.parent().parent().removeClass('selected-bg'); 69 tableWrapDom.find('.right-table tbody tr').removeClass('selected-bg'); 70 tableWrapDom.find('.left-table table tbody tr').each(function () { 71 var spreadCheck = JSON.parse(unescape($(this).attr('attr'))); 72 spreadCheck['Checked'] = false; 73 selectedAllData.push(spreadCheck); 74 }); 75 _this.spreadMultipleFunc(selectedAllData, true); 76 } 77 $this.parent().parent().removeClass('selected-bg'); 78 tableAllSelected = !tableAllSelected; 79 }, 80 indexOf: function (val) { 81 var _this = this; 82 for (var i = 0; i < _this.checkDataArr.length; i++) { 83 if (_this.checkDataArr[i] == val) return i; 84 } 85 return -1; 86 }, 87 remove: function (val) { 88 var _this = this; 89 var index = _this.indexOf(val); 90 if (index > -1) { 91 _this.checkDataArr.splice(index, 1); 92 } 93 }, 94 spreadMultipleFunc: function (checkData,unCheck) { 95 var _this = this; 96 if (checkData instanceof Array) { 97 if (_this.checkDataArr && _this.checkDataArr.length > 0) { 98 var newArr = _this.checkDataArr.concat(); 99 if (unCheck) { 100 newArr.forEach(function (item, index) { 101 checkData.forEach(function (subItem) { 102 if (subItem[_this.checkId] == item[_this.checkId]) _this.remove(item); 103 }); 104 }); 105 } else { 106 checkData.forEach(function (item) { 107 var repeatNum = 0; 108 newArr.forEach(function (subItem) { 109 if (subItem[_this.checkId] == item[_this.checkId]) repeatNum++; 110 }); 111 if (repeatNum == 0) _this.checkDataArr.push(item); 112 }); 113 114 } 115 } else { 116 checkData.forEach(function (item) { 117 _this.checkDataArr.push(item); 118 }); 119 } 120 } else { 121 if (checkData.Checked) { 122 if (_this.checkDataArr && _this.checkDataArr.length > 0) { 123 if (_this.checkDataArr.indexOf(checkData) === -1) _this.checkDataArr.push(checkData); 124 } else { 125 _this.checkDataArr.push(checkData); 126 } 127 128 } else { 129 _this.checkDataArr.forEach(function (item, index) { 130 if (item[_this.checkId] == checkData[_this.checkId]) { 131 _this.checkDataArr.splice(index, 1); 132 } 133 }); 134 } 135 } 136 }, 137 initSelectedTr: function (tableWrapDom,dataLength) { 138 var _this = this; 139 if ($(tableWrapDom).find('.left-table tbody tr').length > 0 && _this.checkDataArr.length > 0) { 140 $(tableWrapDom).find('.left-table tbody tr').each(function () { 141 var $this = $(this); 142 var _index = $(this).index(); 143 var obj = JSON.parse(unescape($(this).attr('attr'))); 144 _this.checkDataArr.forEach(function (item) { 145 if (obj[_this.checkId] == item[_this.checkId]) { 146 $this.addClass('selected-bg').find('input[type="checkbox"]').prop('checked', true); 147 $(tableWrapDom).find('.right-table tbody tr').eq(_index).addClass('selected-bg'); 148 } 149 }); 150 }); 151 if ($(tableWrapDom).find('.left-table tbody tr td input[type="checkbox"]:checked').length == dataLength) { 152 $(tableWrapDom).find('.left-table th input[type="checkbox"]').prop('checked', true); 153 } else { 154 $(tableWrapDom).find('.left-table th input[type="checkbox"]').prop('checked', false); 155 } 156 } 157 } 158 }
调用:
tableMultiple.inputCheckFunc('#mianTable', 'RecordId');
//获取选中的数据
tableMultiple.checkDataArr.forEach(function (item) {
item['PassStatus'] = PassStatus;
try {
tempDt.forEach(function (item2) {
if (item.SapId == item2.SapId) {
item2['PassStatus'] = PassStatus;
throw '';
}
});
tempDt.push(item);
} catch (e) {
}
});
tableMultiple.initSelectedTr('#mianTable', result.data.rows.length);