当我在我的网格中声明searchOnEnter: true时,它允许我在我的网格上进行搜索时使用 enter 键。然而,当我按回车键进行搜索时,它根本不会过滤网格。但是,当我重复两次相同的操作时,过滤器会第二次起作用。我不知道为什么会这样。一个想法是它可能第一次发送一个空字符串,即使我清楚地输入了搜索文本,但我又不确定。任何帮助表示赞赏。
-亚当
当我在我的网格中声明searchOnEnter: true时,它允许我在我的网格上进行搜索时使用 enter 键。然而,当我按回车键进行搜索时,它根本不会过滤网格。但是,当我重复两次相同的操作时,过滤器会第二次起作用。我不知道为什么会这样。一个想法是它可能第一次发送一个空字符串,即使我清楚地输入了搜索文本,但我又不确定。任何帮助表示赞赏。
-亚当
这是由于grid.filter.js
struts2-jquery-grid-plugin 的错误引起的。
要解决这个问题,您需要修补 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;
}
(另见这里)