【问题标题】:jqGrid navGrid search submit on Enter keypress not workingjqGrid navGrid 搜索提交上 Enter 按键不起作用
【发布时间】:2010-10-26 17:32:57
【问题描述】:

我希望能够在按下“Enter/Return”键时调用搜索对话框上的查找按钮。不幸的是,'savekey' 选项不会提交表单,与编辑和添加表单编辑的方式相同。

这是我正在使用的代码的 sn-p。

$("#list").jqGrid('navGrid', '#pager', 
    {edit: true, add: true, del: true, search: true, view: true},

    ...

    {
        caption: "Search",
        closeAfterSearch: true,
        closeOnEscape: true,
        sopt: ['cn','eq'],
        savekey: [true, 13] 
    },

这是我查阅过的 form_editing 文档的链接:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing&s[]=savekey

这里是单字段搜索文档的链接:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:singe_searching&s[]=navgrid

我找不到任何表明此功能存在的信息,但我似乎很容易。一如既往,非常感谢任何帮助或指导。

【问题讨论】:

标签: jqgrid


【解决方案1】:

在我看来,如果您将savekey: [true, 13] 选项替换为以下beforeShowSearchonClose 事件句柄,则该选项确实不适用于搜索

beforeShowSearch: function(form){
    form.keydown(function(e) {
        if (e.which == 13) {
            $(".ui-search", form).click();
        }
    });
},
onClose: function(form){
    form.unbind('keydown');
}

此方法不仅适用于single field searching,也适用于advance searching

如果您希望“Enter”键仅在输入字段中起作用,您可以将form.keydown 替换为$('.vdata',form).keydown 并在unbind 中进行相应的更改。

【讨论】:

  • 这完全有道理。我得试一试。感谢您的帮助。
【解决方案2】:

我在 FireFox 上遇到了同样的问题,但上述解决方案在 IE 中运行良好。为了让它在 Firefox 上运行,我不得不使用焦点功能而不是点击如下:

beforeShowSearch: function (form) {
                        form.keydown(function (e) {
                            if (e.which == 13) {
                                $("#fbox_list_search").focus();
                            }
                        });
                    },

【讨论】:

    【解决方案3】:

    这很有帮助,但我提供的解决方案并不适合我。我调整了提供的代码,现在它有点工作,但它似乎没有提交正确的数据。每当我按下回车键时,它都会在输入框中提交一个“0”,而不是我实际输入的任何内容。无论出于何种原因,它都没有发布 searchString。我使用的代码是:

    beforeShowSearch: function(form){
      $(form).keydown(function(e) {
        if (e.keyCode == 13) {
          $("#fbox_cust_grid_search").click();
        }
      });
    },
    onClose: function(form){
      $(form).unbind('keydown');
    }
    

    你们中的任何人对这里可能发生的事情有什么建议吗?

    编辑:有趣的是,当我在 .click() 方法之前发出警告(任何东西)时,数据会完美发布。有什么想法吗?

    【讨论】:

    • 我遇到了同样的问题。我第一次单击输入时,它会提交searchString 为空和_search = true 的请求,当我第二次这样做时,它会提交正确的数据。这也发生在使用searchOnEnter
    • 有人找到解决方案了吗?我也有同样的问题。
    【解决方案4】:

    试试下面的代码。为我工作:

    beforeShowSearch: function(form){
       $(form).keydown(function(e) {
          if (e.keyCode == 13) {
             setTimeout(function() {
                $("#fbox_cust_grid_search").click();
             }, 200);
          }
       });
       return true;
    },
    onClose: function(form){
       $("#fbox_cust_grid_search").unbind('keydown');
    }
    

    click 方法调用过快时似乎存在问题。在搜索之前给网格 200 毫秒的时间来完成它必须做的事情似乎可以解决问题。

    【讨论】:

      最近更新 更多