1、原数组去空:保留原有数组地址
(1)实现方法:保留数组地址
function removeEmpty(arr){
for(var i = 0; i < arr.length; i++) {
if(arr[i] == "" || typeof(arr[i]) == "undefined") {
arr.splice(i,1);
i = i - 1;
}
}
return arr;
};
(2)使用场景:原数组去重
arr.splice(i,1);
i = i - 1;
(3)关键点解释: i = i - 1,arr.splice(i,1) 会删除一个数据,i的下表应该回退1
2、dataGrid中checkbox过滤disable
(1)dataGrid渲染,showCheckbox: true开启复选框
(2)实现方法:ajaxSuccess、onSelectRow、onSelectAll
ajaxSuccess: function(data){
$('#dataGrid input:checkbox').each(function(index,ck) {
if (data.list[index].confirmState == 1) {
let id = '#' + ck.getAttribute("id") + "";
$(id).iCheck('disable');
}
})
},
onSelectRow: function(id, isSelect, event){
let d = $("#dataGrid").jqGrid('getRowData',id);
if (d.confirmState==1) {
isSelect = false;
$("#dataGrid").jqGrid('resetSelection',id);
}
},
onSelectAll: function(ids, isSelect){
$('#dataGrid input:checkbox').each(function(index,ck) {
if (ck.disabled==true) {
ck.checked = false;
for (var i = 0; i < ids.length; i++) {
if(ck.id.indexOf(ids[i])>0)
{
ids.splice(i,1);
i = i - 1;
}
}
}
});
if(ids.length==0){
$("#dataGrid").jqGrid('resetSelection');
js.showMessage("全部disable","操作提醒",4000);
}
}
(3)代码解析:
ajaxSuccess:加载完成时渲染,根据data属性条件标记disable数据行
onSelectRow:选择行时触发事件,取所选行数据属性作条件判断(与标记disable条件一致),识别是否看可选
onSelectAll:根据返回的ID数组,过滤,去除,余下的是需要选中的
(4)其他方法:禁止点击行勾选复选框
$("#dataGrid")
.on('jqGridBeforeSelectRow', function(t, id, e){
return $(e.target).hasClass('cbox');
});
2、以上内容参考实现方案用于jeesite卓源后台管理的HTML
3、解决方法的参考来源:
注意:本文归作者所有,未经作者允许,不得转载