代码之家  ›  专栏  ›  技术社区  ›  Andrus

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

  •  0
  • Andrus  · 技术社区  · 9 年前

    自由jqgrid有页码字段。输入页码并按enter键应调用指定的表格。 这在某个时候停止了工作。 使用远程JSON数据。输入页码并按enter键无效。

    我添加了 alert(key); 到jqgrid源代码,如下面代码行前所示

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

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

    如何解决此问题?如何找到输入被忽略的原因?也许其他方法可以捕获 进来 键并取消事件,以便它不会传递到此处理程序。 如何找出这一点?

    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 回复  |  直到 9 年前
        1
  •  2
  •   Oleg    9 年前

    我认为这个问题不存在于免费jqGrid中。我想是其他的把柄 keydown 你登记的报税表 false (或者以其他方式 e.preventDefault() ),防止处理其他 键盘按下 处理 <kbd>Enter</kbd> 钥匙为了确保必须调试所有注册的 键盘按下 键盘按下 处理程序。

    更新时间: 我想您应该将寻呼机输入字段移动到导航栏内(因为我记得您以前的问题)。因此 进来 在寻呼机中的输入将被替换为 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的标准导航器中不起作用,但它可以解决自定义导航栏后存在的问题。