JQGrid(searchOnEnter:true)错误

时间:2013-09-17 18:24:49

标签: javascript jquery search jqgrid

当我在网格中声明 searchOnEnter:true 时,它允许我在网格上搜索时使用回车键。然而,当我按下回车键进行搜索时,它根本不会过滤网格。然而,当我重复两次相同的动作时,过滤器第二次工作。我不知道为什么会这样。一个想法是它可能是第一次发送一个空字符串,即使我清楚地输入搜索文本,但我又不确定。任何帮助表示赞赏。

- 亚当

2 个答案:

答案 0 :(得分:1)

这是由于struts2-jquery-grid-plugin grid.filter.js中的错误引起的。

答案 1 :(得分:1)

要解决此问题,您需要修补jqGrid的源代码。您需要找到keydown事件的处理程序(在搜索对话框中按Enter按钮时运行的函数)。通过在源文件中搜索“searchOnEnter”可以找到此代码。正确的片段看起来如此:

    if (p.searchOnEnter || p.closeOnEscape) {
       $("#"+$.jgrid.jqID(IDs.themodal)).keydown(function (e) {
          var $target = $(e.target);
          if (p.searchOnEnter && e.which === 13 && // 13 === $.ui.keyCode.ENTER
             !$target.hasClass('add-group') && !$target.hasClass('add-rule') &&
             !$target.hasClass('delete-group') && !$target.hasClass('delete-rule') &&
             (!$target.hasClass("fm-button") || !$target.is("[id$=_query]"))) {

在这里你应该拆分代码行$("#"+fid+"_search").focus().click(); 在以下两个方面:

                $("#"+fid+"_search").focus();
                setTimeout(function(){
                   $("#"+fid+"_search").click();
                },0);

以原始代码结尾:

                return false;
          }

(另见here