如何允许在免费的jqgrid pager

时间:2015-08-30 17:43:38

标签: javascript jquery javascript-events jqgrid free-jqgrid

免费的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开发者工具会显示以下侦听器。如何找到哪些块输入密钥?

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为问题不存在于免费的jqGrid中。我想你注册的keydown的其他一些句柄返回false(或以e.preventDefault()之类的其他方式),这会阻止处理其他keydown 和< / em>处理<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的标准导航器中没有任何效果,但它可以解决自定义导航器栏后存在的问题。