我正在使用jqgrid使用multiselect选项。我必须实现两种不同的功能。
功能1: 我必须禁用复选复选框取决于某些条件。为此我在beforrowselect事件中使用下面的代码块。
beforeSelectRow: function(rowid, e) {
if( $("#jqg_TableId_"+rowid).attr("disabled") ){
return false;
}
return true;
}
这段代码功能正常。
功能2:但问题是,当我点击行中的任意位置时,复选框被选中但复选框值不正确。当我在复选框区域内单击时,复选框的值是准确的。为此,我想限制用户单击复选框区域以获取复选框。为此,我使用下面提到的代码块。
beforeSelectRow: function(rowid, e) {
return $(e.target).is('input[type=checkbox]');
},
如果我单独使用任何一个块,那么它的功能正常。 我需要实现两个功能,但两个块都返回值。无法为两种情况返回值。请帮帮我如何实现这两个功能。
以下是我必须实现的完整代码。
beforeSelectRow: function(rowid, e) {
if( $("#jqg_TableId_"+rowid).attr("disabled") ){
return false;
}
return true;
}
return $(e.target).is('input[type=checkbox]');
},
答案 0 :(得分:0)
在每个问题中包含哪个版本的jqGrid以及您使用的fork(free jqGrid,Guriddo jqGrid JS或版本< = 4.7中的旧jqGrid)非常重要。我认为你描述的问题存在是因为你使用了一些旧版本的jqGrid。
演示https://jsfiddle.net/OlegKi/4ga1ekh3/3/使用免费的jqGrid 4.12.1(它是jqGrid的分支,我开发的更多为一年)和以下代码
beforeSelectRow: function (rowid, e) {
var item = $(this).jqGrid("getLocalRow", rowid);
if (item.closed) {
return false;
}
return true;
}
拒绝选择具有closed: true
属性的行。单击行上任何位置的方式与单击复选框的方式相同。
我会建议你考虑使用我在the answer中描述的另一种方式。它只是设置
rowattr: function (rd) {
if (rd.closed) {
return {
"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"
};
}
}
查看另一个演示https://jsfiddle.net/OlegKi/4ga1ekh3/4/。它设置了禁用等级"关闭"行,如果单击选择列的列标题(选择所有功能),则会阻止选择行。