jqGrid搜索运算符未定义

我正在使用jqGrid的内置搜索function,并开始在服务器端获取运行以执行搜索的查询的一些错误。 我把它缩小到jqGrid传递给服务器的filter参数:

{ "groupOp":"AND", "rules":[ { "field":"FOO", "op":"ge", "data":"181" }, { "field":"FOO", "op":"undefined", "data":"196" } ] } 

正如您所看到的,第二个对象中的搜索运算符是“未定义” – 这很奇怪,因为在选择搜索运算符时没有空/空选项。 谁看过这个吗? 这是一个已知的问题? 我根本无法在我的最终重现它,所以我想知道我的用户是否有一些’特殊’来做这件事。 我正在使用jQuery 1.4.2运行jqGrid 3.8.2。

更新:我能够在IE 7中重现错误。似乎在搜索查询中添加第二个参数会导致该浏览器中的未定义运算符。

更新2:根据发行说明,似乎这应该在jqGrid 3.6中修复:

修复IE7和IE6中的searchFilter,以便在搜索多个字段时不返回未定义的值。

这显然是一个错误。 我要在这里结束这个问题。

这里描述了问题和工作方法。 主要问题是jQuery错误 。 作为解决方法,您应该在页面上包含以下代码

 // we use workaround from http://www.trirand.com/blog/?page_id=393/bugs/in-multiple-search-second-and-subsequent-ops-are-sent-as-undefined-in-ie6/ // to fix the bug in the jQuery.clone (see http://bugs.jquery.com/ticket/6793 and // dscussion on the http://api.jquery.com/clone/ $.event.special.click = { setup: function() { if ($(this).hasClass("ui-search")) { $(this).bind("click", jQuery.event.special.click.handler); } return false; }, teardown: function() { $(this).unbind("click", jQuery.event.special.click.handler); return false; }, handler: function(event) { //$(".ui-searchFilter td.ops select").attr("name", "op"); $(".ui-searchFilter td.ops select").filter(function () { return $(this).css("display") != "none"; }).attr("name", "op"); } }; 

目前正在开发新的MultiSelect插件,没有这样的问题(请参阅此处的更多信息)。 您可以从GitHub下载新的测试版。 在我最近的回答中,我包含了使用新插件的演示。