【问题标题】:how to implement hotkeys in jsf / richfaces xhtml如何在 jsf/richfaces xhtml 中实现热键
【发布时间】:2013-10-11 18:25:23
【问题描述】:

这似乎是一件非常简单的事情,但我已经搜索过,但找不到如何去做。

在richfaces/jsf中我想在一个简单的表单上实现一些热键,例如:

<h:panelGrid columns="3" width="500">
    <h:outputLabel value="User"/>
    <h:commandButton id="userAdd" value="Add" action="staffNewUser"/>
    <h:commandButton id="userEdit" value="Edit" action="staffEditUsers"/>
    ...
</h:panelGrid>

我已经尝试了很多方法来让热键工作,包括:

<rich:hotKey key="alt+ctrl+u" >
    <rich:componentControl target="userAdd"  operation="click"/>
</rich:hotKey> 

没有任何作用。任何想法,将不胜感激。 (顺便说一句,我也没有在热键中找到任何关于“关键”目标的文档,并且希望能得到一个关于它可能在哪里的指针。)

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    您缺少enabledInInput 属性,该属性在将&lt;rich:hotkey/&gt; 用于输入组件时是必需的。所以你应该拥有的是

    <rich:hotKey key="alt+ctrl+u" enabledInInput="true">
        <rich:componentControl target="userAdd"  operation="click"/>
    </rich:hotKey> 
    

    进一步阅读:

    编辑:你真的不需要组件控制。可以直接使用热键的onkeydown事件:

    <rich:hotKey onkeydown="#{rich:element('userAdd')}.click();return false;" preventDefault="true" key="alt+ctrl+u"/>
    

    【讨论】:

    • 这不起作用。您引用的显示弹出窗口的示例确实有效。但是,在我的情况下,按钮没有被点击,或者更准确地说,按钮所采取的动作没有发生。 (此外,由于此页面上没有输入字段,因此 enabledInInput 不会(不应该)产生任何影响。)感谢指向参考的指针;我以前没有看到过那个页面。
    • 我头脑简单的大脑非常感谢你。尽管浏览器似乎已经定义了很多热键,但这很有效。 :(
    • @wjr - 这是 RF 中的一个已知问题,可能会让您感到困惑。 preventDefault 在 Chrome 和 IE10 中不起作用。如果它适合你,也请接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多