免费的jqgrid有页码字段。输入页码并按Enter键调用指定的表。 这停止了一段时间。 使用远程json数据。输入页码并按下输入不执行任何操作。
我将alert(key);
添加到jqgrid源代码中,如下面的代码所示
https://github.com/free-jqgrid/jqGrid/blob/master/js/jquery.jqgrid.src.js#L4045
如果按下enter键,则不会出现警告框。 如果按下其他键,则会出现警告框。
如何解决这个问题?如何找到输入被忽略的原因。也许某些其他方法捕获输入键并取消事件,以便它不会传递给此处理程序。 怎么找到这个?
if (p.pginput === true) {
$("input.ui-pg-input", pgcnt).bind("keypress.jqGrid", function (e) {
var key = e.charCode || e.keyCode || 0, newPage = intNum($(this).val(), 1);
alert(key); // ADDED
if (key === 13) {
if (!clearVals("user", newPage, intNum(p.rowNum, 10))) { return false; }
$(this).val(newPage);
p.page = ($(this).val() > 0) ? $(this).val() : p.page;
populate.call(ts);
return false;
}
return this;
});
}
更新
Chrome开发者工具会显示以下侦听器。如何找到哪些块输入密钥?
答案 0 :(得分:2)
我认为问题不存在于免费的jqGrid中。我想你注册的keydown
的其他一些句柄返回false
(或以e.preventDefault()
之类的其他方式),这会阻止处理其他keydown
和< / em>处理<kbd>Enter</kbd>
密钥。确保必须调试所有已注册的keydown
和keydown
处理程序。
更新:我想你在浏览器栏中移动了寻呼机输入字段(因为我记得你的旧问题)。结果,寻呼机输入中的 Enter 将被替换为click
。
$focused = $(this).find(":focus");
if ($focused.length > 0) {
$focused.trigger("click");
return false;
}
标准导航栏中不存在此问题。它仅在您自定义导航栏后才存在。不过我今天发布了the changes,它将行$focused = $(this).find(":focus");
修改为
$focused = $(this).find(".ui-pg-button").filter(":focus");
它在免费的jqGrid的标准导航器中没有任何效果,但它可以解决自定义导航器栏后存在的问题。