Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在免费jqgrid寻呼机中允许转到指定页面_Javascript_Jquery_Javascript Events_Jqgrid_Free Jqgrid - Fatal编程技术网

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

Javascript 如何在免费jqgrid寻呼机中允许转到指定页面,javascript,jquery,javascript-events,jqgrid,free-jqgrid,Javascript,Jquery,Javascript Events,Jqgrid,Free Jqgrid,免费jqgrid有页码字段。输入页码并按enter键将调用指定的表。 有一段时间它停止工作了。 使用远程json数据。输入页码并按enter键不起任何作用 我添加了警报(键)到jqgrid源代码,如第行之前的代码所示 如果按enter键,则不会显示警报框。 如果按下其他键,则会出现警告框 如何解决这个问题?如何查找忽略enter的原因。也许其他一些方法会捕获enter键并取消事件,这样就不会将其传递给此处理程序。 怎么找到这个 if (p.pginput ===

免费jqgrid有页码字段。输入页码并按enter键将调用指定的表。 有一段时间它停止工作了。 使用远程json数据。输入页码并按enter键不起任何作用

我添加了
警报(键)到jqgrid源代码,如第行之前的代码所示

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

如何解决这个问题?如何查找忽略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;
                    });
                }
更新

ChromeDeveloperTools显示以下侦听器。如何找到输入键的块


我认为问题不存在于免费jqGrid中。我猜您注册的
keydown
的某些其他句柄返回
false
(或者以类似
e.preventDefault()
)的其他方式),这些句柄阻止处理其他
keydown
和处理
Enter
键。为了确保能够调试所有注册的
keydown
keydown
处理程序

更新:我想您应该将寻呼机输入字段移动到导航栏中(我记得您以前的问题)。因此,寻呼机输入中的输入将被替换为
单击

$focused = $(this).find(":focus");
if ($focused.length > 0) {
    $focused.trigger("click");
    return false;
}
标准导航栏中不存在此问题。它仅在自定义导航栏后存在。尽管如此,我今天发布了一篇文章,修改了行
$focused=$(this)

$focused = $(this).find(".ui-pg-button").filter(":focus");

它对免费jqGrid的标准导航器没有影响,但它可以解决您自定义导航栏后存在的问题。

您使用的是哪个版本的免费jqGrid?试试看,这是我为你上一个问题准备的。Yo do可以在寻呼机的输入字段中设置1或2,然后按Enter键更改页面。
jquery.jqgrid.src.js
包含
日期:2015-07-24
。您的演示可以工作,但应用程序不能。我在Chrome开发者工具中查看了这个输入元素监听器,但它们都指向jquery源代码。如何调试该问题?我可以创建测试页面并提供链接。@Oleg。应用程序代码包含
$(“html”).keydown(函数(evt){返回htmlKeydown(evt);})返回前添加警报不会在enter键上显示消息框,但会在该输入元素中按下的其他键上显示。是否尝试更改(至少暂时)释放jqGrid文件的URL以使用GitHub或4.9.2版的最新源代码(请参阅)。我提醒了一些密切的错误,但我不记得确切的修复。问题出在解绑的某个地方,但不在问题文本中包含的地方。版本4.9.1和4.9.2几乎不包含新功能,只包含bug修复。因此,我建议您将今天github中的jquery.jqgrid.src.js替换为日期为2015-08-10的文件。问题依然存在。我更新了问题并提供了chrome开发者工具输出。如何调试所有注册的处理程序?如何将断点放置到第一个处理程序并单步执行它们的代码?@Andrus:对不起,答案太长,无法给出注释。我认为您已经找到了所有使用JavaScript代码的宫殿,其中
keypress
keydown
keyup
都注册在您的代码中。如果您还没有本地化这些地方,那么
$。\u数据($($(“input.ui pg input”)[0],“events”)
可以帮助您本地化这些地方。您应该在寻呼机新页码的输入框中键入,然后在所有可疑位置设置/启用断点,最后按Enter键并调试代码。最重要的是
返回false的地方和诸如
.preventDefault()
之类的虚构调用。所有处理程序都指向一个jquery源代码行,如问题中所示。在Chrome中,在这一行附近按F11只在jQuery内部运行代码,不调用外部事件处理程序。看起来jQuery试图查找焦点元素,但由于未知原因失败,因此不会调用keydown事件处理程序,或者使用Chrome调试器从中删除焦点。在内联编辑中按Enter键可以正常工作,因此这可能与此特定输入元素的jqgrid有关。如何调试或修复此问题?@Andrus:您可以验证
$.\u数据($(“input.ui pg input”)[0],“events”).keypress[0]。handler
显示免费jqGrid的代码,该代码以“function(e){var key=e.charCode | e.keyCode | 0,newPage=intNum($(this.val(),1);if(key==13){if(!clearVals(“user”),newPage,intNum(p.rowNum,10))开头{return false;}$(this.val(newPage);p.page=”我想你在你的代码中注册了
keydown
keyup
,停止了对Enter键的处理,因此
keypress
事件将不会生成。我不能很快解释如何使用gebuggerI在Chrome控制台中验证这
$。\u数据($($(“input.ui pg input”)[0],“events”).keypress[0]。处理程序
在您的注释中包含代码。因此,jquery似乎没有调用此代码。如何强制jquery调用它?是否可以在不使用jquery包装的情况下添加直接处理程序?