如果在jqGrid中使用Oleg clickableCheckboxFormatter进行单击编辑,如何修复javascript异常
中的Oleg消息 包含jqGrid的可单击复选框格式化程序 如果使用了单击内联编辑(内联编辑在beforeSelectRow事件处理程序中启动),则单击使用此格式化程序的复选框列会导致javascript异常: c是未定义的 在jqGrid getCellIndex方法中: $(单元格)值是此格式化程序div,并且c变得未定义 如何解决这个问题 更新 同样的例外也发生在chrome中。 可能div是作为body元素的直接子元素创建的。在本例中,我将jqGrid修补为返回-1:如果在jqGrid中使用Oleg clickableCheckboxFormatter进行单击编辑,如何修复javascript异常,javascript,jquery,jquery-ui,jqgrid,Javascript,Jquery,Jquery Ui,Jqgrid,中的Oleg消息 包含jqGrid的可单击复选框格式化程序 如果使用了单击内联编辑(内联编辑在beforeSelectRow事件处理程序中启动),则单击使用此格式化程序的复选框列会导致javascript异常: c是未定义的 在jqGrid getCellIndex方法中: $(单元格)值是此格式化程序div,并且c变得未定义 如何解决这个问题 更新 同样的例外也发生在chrome中。 可能div是作为body元素的直接子元素创建的。在本例中,我将jqGrid修补为返回-1: getCell
getCellIndex : function (cell) {
var c = $(cell);
if (c.is('tr')) { return -1; }
c = (!c.is('td') && !c.is('th') ? c.closest("td,th") : c)[0];
// AM next line added if removed single click editing in checkbox column click causes error
if (c== undefined ) { return -1; }
if ($.browser.msie) { return $.inArray(c, c.parentNode.cells); }
return c.cellIndex;
},
我无法重现你描述的问题。我想这是
getCellIndex
或调用它的函数中的一个bug。无论如何,这个问题不是一般问题。当问题存在时,可能存在一些场景,但您应该准确描述测试用例:您使用的jqGrid、jQuery、web浏览器的哪个版本等@Oleg。非常感谢。我通过电子邮件向您发送了测试用例。@Oleg我试图在中创建fiddle,但效果良好。不知道是什么原因,这意味着错误不存在于您怀疑的零件中。没有测试用例,就无法定位问题。我不是在度假,所以在4号之前我帮不了你多少忙January@Oleg:可能div是body元素的直接子元素。作为快速修复,我向getCellIndex添加了if(c==undefined){return-1;}
,并更新了问题。在这种情况下,使用clickableCheckBox格式化程序在checbox列中单击不会将焦点放在checkbox上,但其他方式会使其按预期工作。我发送给您的Testcase现在包含此修复