Primefaces - 当焦点在输入字段中时,Jquery 热键只工作一次

Posted

技术标签:

【中文标题】Primefaces - 当焦点在输入字段中时,Jquery 热键只工作一次【英文标题】:Primefaces - Jquery hotkey works only once when the focus is in input field 【发布时间】:2018-11-09 23:02:50 【问题描述】:

由于 primefaces 热键的限制,我放置了以下 jquery 脚本(script source) 以使热键在焦点位于输入字段上时起作用。但它只在页面第一次加载时有效。如果在任何 AJAX 调用之后尝试它不起作用。我有一个包含 head 和 body 标签的主模板;所有 xhtml 文件都包含在其中。下面的代码是在需要热键的特定 XHTML 上。在输入字段外单击时,热键效果很好。有没有办法让它在输入字段中工作?

<ui:define name="pageJS">       
    <script type="text/javascript">
        /* <![CDATA[ */
        $(function() $(':input').bind('keydown', 'ctrl+shift+v', function()saveWidgetVar.jq.click();;return false;););
        /* ]]> */
    </script>
</ui:define>

下一行包含在面板组中。

<p:hotkey id="saveKey" bind="ctrl+shift+v" handler="saveWidgetVar.jq.click();" />

有没有特定的地方需要放置JQuery脚本?

在旁注中,我在另一个博客中注意到,通过更改热键选项可以实现这一点。以下是建议的值:

$.hotkeys.options.filterInputAcceptingElements = false;
$.hotkeys.options.filterTextInputs = false;

我不确定在哪里添加这个?

【问题讨论】:

【参考方案1】:

我通过删除输入验证自定义了 primefaces hotkey.js;将其添加到我的本地资源中;然后通过在主模板中包含自定义文件来覆盖原始文件。在 for 循环中还使用了以下取消绑定代码,以避免多次绑定。

$(document).off('keydown');

一切都很好!!!

【讨论】:

以上是关于Primefaces - 当焦点在输入字段中时,Jquery 热键只工作一次的主要内容,如果未能解决你的问题,请参考以下文章

PrimeFaces ajax 更改输入和对另一个字段的操作

当输入字段获得焦点时,按钮被输入字段隐藏

在 primefaces 数据表中排序

当输入字段处于焦点时,占位符不会消失

在重置JSF + PrimeFaces中的表单之前,检查一些必需的输入字段

asp.net mvc HTML5 日期输入类型