jqGrid navGrid搜索提交按Enter键无法正常工作

时间:2010-10-26 17:32:58

标签: jqgrid

当按下“Enter / Return”键时,我希望能够在搜索对话框中调用查找按钮。不幸的是,'savekey'选项不提交表单,也不像在编辑中那样提交表单编辑。

以下是我正在使用的代码片段。

$("#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

我找不到任何暗示这个功能存在的东西,但我似乎很容易。一如既往,非常感谢任何帮助或指导。

4 个答案:

答案 0 :(得分:2)

在我看来,如果您替换了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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

这非常有用,但我提供的解决方案并不适合我。我调整了提供的代码,它现在有些工作,但它似乎没有提交正确的数据。每当我按下回车键时,它会在输入框中提交一个“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()方法之前提醒某事(任何事情)时,数据会被完美地发布。有什么想法吗?

答案 3 :(得分:0)

尝试以下代码。适合我:

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方法过快时似乎存在问题。让网格200ms在搜索之前做它必须做的事情似乎可以解决问题。