JQGrid:检查/取消选中Chrome中的复选框

时间:2014-01-07 15:50:24

标签: jquery google-chrome jqgrid

更新已解决的问题:确定而不是使用cellattr,我只需在loadComplete中设置检查状态,循环遍历行。 getChild是一个用于检索第一个子元素的跨浏览器函数,不同的单击处理程序用于奇怪的复选框doubleclick处理,其中doubleclick仅检查该框一次,但在IE中触发两个事件。

  for (i = 1; i < c; i += 1) {
            var cells = rows[i].cells, selectCheckBox = getChild(cells[0]), optionCheckBox = getChild(cells[3]);

            optionCheckBox.disabled = selectCheckBox.value !== '1';

            if (selectCheckBox.checked)
                $('#' + rows[i].id, $grid).addClass('selectedRowClass');

            $(cells[selectedCol]).click(_isInternetExplorer ? ieSelectClickHandler : selectClickHandler);
            $(cells[optionCol]).click(_isInternetExplorer ? ieoptionClickHandler : optionClickHandler);
        }

网格配置为l​​oadonce,并有两个复选框列。第一个是“选择”,另一个是“选项”复选框。

我们的想法是,当选中“选择”复选框时,启用“选项”复选框,当取消选中“选择”复选框时,将禁用“选项”复选框。

在IE中,我可以让它工作正常,因为我可以禁用单元格,复选框继承属性。不幸的是,这不适用于Chrome,因为禁用不是TD元素支持的属性。

 { name: "Option", index: "Option", width: 50, align: "left", sortable: false,
            formatter: "checkbox", formatoptions: { disabled: false }, editable: true, edittype: "checkbox", editoptions: { value: "1:0" },
            stype: "select", searchoptions: { value: ":All;1:Checked;0:Unchecked" },
            cellattr: function (rowId, value, rawObject) {
                return rawObject[0] === '1' ? '' : ' disabled="disabled"';

如何在Chrome中禁用该复选框?

更新:以下部分已解决,我已成功禁用“选项”复选框,但以下内容:

$grid.jqGrid('setCell', id, 'Option', '0');

正在清除Chrome中复选框的“已停用”状态(但不是IE)。颠倒这些操作的顺序解决了这个问题。

相应地,我在为Chrome中的“选择”复选框创建onclick处理程序时遇到了困难:

这样的事似乎有效:

$(row.cells[3]).find('*').each(function () { $(this).attr('disabled', true); });

但如果我输入的内容如下:

$(row.cells[3]).find('*').each(function () { $(this).attr('disabled', !isChecked); });

它没有。类似的东西:

$(':input:first',row.cells[3]).prop('disabled', !isChecked); });

似乎根本不起作用。

编辑:这就是我为LoadComplete处理程序中的复选框设置点击处理程序的方法;我尝试在复选框上设置它们,但复选框似乎是暂时的并且丢失了订阅?

$(cells[selectedCol]).click(isInternetExplorer ? ieSelectClickHandler : selectClickHandler);
            $(cells[registerCol]).click(isInternetExplorer ? ieOptionClickHandler : OptionClickHandler);

我希望有人可以朝着正确的方向推动我,谢谢。

0 个答案:

没有答案