如何允许转到免费的 jqgrid 寻呼机中的指定页面

How to allow go to specified page in free jqgrid pager

免费的jqgrid有页码字段。输入页码并按回车键应该调用指定的 table。 这有时会停止工作。 使用远程 JSON 数据。输入页码并按回车键没有任何作用。

我将 alert(key); 添加到 jqgrid 源代码中,如下面的代码所示

https://github.com/free-jqgrid/jqGrid/blob/master/js/jquery.jqgrid.src.js#L4045

如果按 enter,则不会出现警告框。 如果按下其他键,则会出现警告框。

如何解决这个问题?如何找到输入被忽略的原因?也许其他一些方法捕获 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 开发人员工具显示以下侦听器。如何找到哪些阻止了 enter 键?

我想这个问题不存在于免费的 jqGrid 中。我猜你注册了 returns falsekeydown 的其他句柄(或以其他方式,如 e.preventDefault()),这会阻止处理其他 keydown 处理<kbd>Enter</kbd>键。为了确保必须调试所有已注册的 keydownkeydown 处理程序。

更新: 我想您将寻呼机输入字段移到了导航栏内(因为我记得您的老问题)。结果,寻呼机输入中的 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的标准导航器中没有任何效果,但可以解决您自定义导航器栏后存在的问题。