jqgrid - 删除从禁用行检查的突出显示和输入类型

时间:2015-05-25 11:18:54

标签: jquery jqgrid

下面的代码会在页面加载时默认选中每一行,并禁用具有flag set = 1的行。

   //disable row which are flagged
    rowattr: function (item) {
            if (parseInt(item.IS_FLAGGED) == 1) {
                return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"};
            }
    },

    //prevent selection of disabled rows
    beforeSelectRow: function (rowid, e) {
        if ($(e.target).closest("tr.jqgrow").hasClass("ui-state-disabled")) {
            return false;   // not allow select the row
        }
        return true;    // allow select the row
    },

    loadComplete: function () {
        $("#cb_" + this.id).click(); //enable checkbox on top of multiselect column

            $('input.cbox').prop('checked',true); //enable other checkboxes
            $("tr.jqgrow").addClass('ui-state-highlight'); //highlight row

            //remove highlight and input type checked from disabled row
            if ($("tr.jqgrow").hasClass("ui-state-disabled")) {
            $("tr.jqgrow input.cbox").prop('checked',false);
            $("tr.jqgrow").removeClass("ui-state-highlight"); //enable other checkboxes
        }

    }

但在loadComplete上,它还会突出显示已停用的行。如何删除课程highlight并仅为checked=falseflag_set = 1

的行设置disabled
jQgrid version = 4.6
jQuery version = 1.7.2

1 个答案:

答案 0 :(得分:0)

我使用旧的jQuery 1.7.2和旧的jqGrid 4.6分析了这个问题。原因是jQuery 1.7.2在之前触发click 复选框将被更改。因此,jqGrid不会将点击视为选中复选框并且没有任何反应。它似乎是jQuery 1.6-1.8中的一个错误,而不是jqGrid中的错误。 jQuery 1.9及更高版本似乎没有这样的问题。

主要问题是事实的后果。好的,你现在知道它是jQuery 1.7.2中的一个错误。你怎么解决这个问题?您可以重写代码的某些部分并在代码中实现变通方法,以便它可以与旧版本的jQuery和jqGrid一起正常工作。这是你的方式吗?

我的建议是更新到jQuery 1.11.3并考虑更新jqGrid以释放jqGrid 4.9(将很快发布)。