【问题标题】:jQgrid: Disable checkbox click and select checkbox only when checkbox is clickedjQgrid:仅在单击复选框时禁用复选框单击并选择复选框
【发布时间】:2016-01-24 06:13:16
【问题描述】:

我正在使用 jqgrid 使用多选选项。我必须实现两种不同的功能。

功能一: 我必须禁用检查复选框取决于某些条件。为此,我在 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]');
},

【问题讨论】:

    标签: javascript php jquery checkbox jqgrid


    【解决方案1】:

    重要的是在每个问题中包含您使用的 jqGrid 版本和来自哪个分支(free jqGridGuriddo jqGrid JS 或版本

    演示https://jsfiddle.net/OlegKi/4ga1ekh3/3/使用免费的jqGrid 4.12.1(它是jqGrid的fork,我开发了一年多)和以下代码

    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/。它在“关闭”行上设置禁用类,以防止在单击选择列的列标题时选择行(全选功能)。

    【讨论】:

    • beforeSelectRow 中用于禁用复选框选择的块按预期工作,但 rowattr 事件未按要求工作。返回“class”时整行被禁用:“ui-state-disabled ui-jqgrid-disablePointerEvents”。只有在单击复选框区域时才需要检查复选框。
    • @user2992704:是的,这是我所期望的。禁用行的设置一次会做两件事:向用户显示哪些行不能被选择 2) 解决选择所有行的问题。我们可以使用其他一些预定义的类来代替:ui-subgridjqgroupjqfoot。请参阅jsfiddle.net/OlegKi/4ga1ekh3/5/- 必须结合两者 rowattrbeforeSelectRow
    猜你喜欢
    • 2011-09-21
    • 2010-09-16
    • 2016-11-14
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多