Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
RichFaces热键';他不为我工作_Richfaces_Selector_Hotkeys - Fatal编程技术网

RichFaces热键';他不为我工作

RichFaces热键';他不为我工作,richfaces,selector,hotkeys,Richfaces,Selector,Hotkeys,我很难让rich:热键在richfaces(版本:4.3.2)中按预期工作 主要问题:只有当弹出面板显示时,我才能使热键工作 在网站上的某一点上,我显示了一个popuppanel,其中包含可继续进行的选项。 例如(合成): 选择: 1-转到下一页 2-转到向导的开头 3-取消向导并转到主页 如果按“1”,我希望选择第一个选项,请在“2”上选择第二个选项 到目前为止,我的代码是: <h:form prependId="false" id="contentForm"> ...

我很难让rich:热键在richfaces(版本:4.3.2)中按预期工作

主要问题:只有当弹出面板显示时,我才能使热键工作

在网站上的某一点上,我显示了一个popuppanel,其中包含可继续进行的选项。
例如(合成):

选择:

1-转到下一页

2-转到向导的开头

3-取消向导并转到主页

如果按“1”,我希望选择第一个选项,请在“2”上选择第二个选项

到目前为止,我的代码是:

<h:form prependId="false" id="contentForm">
    ...
    <rich:popupPanel id="navPopup" modal="true" autosized="true" resizeable="false" styleClass="popup-panel" 
        zindex="202" domElementAttachment="parent">
        ...
        <rich:panel id="navOptions">
            <!-- this div is used to check visibility of the navpopuppanel, for the key event -->
            <script type="text/javascript">
                /* <![CDATA[ */

                    function focusPopupChoice(getal) {
                        alert(getal);
                    }

                /*]]>  */
            </script>
            <a4j:repeat value="#{cc.attrs.managedBean.navigationMenuModel.menuOptions}" var="option" id="repeat" rowKeyVar="index">
                <a4j:commandButton action="#{controllerBean.action.menuSelect(option.viewId)}" value="#{index +1} - #{option.label}" 
                    render="@form" type="button" styleClass="btn-keuze-ok" id="popupChoice" 
                    oncomplete="#{rich:component('navPopup')}.hide(); return false;" onkeypress="return submitByEnter(event)" 
                    immediate="true"/>
                <rich:hotKey enabledInInput="true" key="#{index +1}" onkeyup="focusPopupChoice(#{index +1});" preventDefault="true"/>
            </a4j:repeat>
        </rich:panel>
    </rich:popupPanel>
    ...
</h:form>

...
...
/*   */
...
这很有效。我在按1-3时收到警报。 问题:当弹出窗口不可见时,我也会收到警报

所以我找到了选择器选项。所以我添加了选择

<rich:hotKey enabledInInput="true" selector="#navPopup" key="#{index +1}" onkeyup="focusPopupChoice(#{index +1});" preventDefault="true"/>

现在它不再工作了。热键现在唯一起作用的时刻是当选择按钮已经聚焦/选中时。当我点击页面上的任何地方(除了按钮)时,热键不再工作

我还试着把选择器=“#contentForm”,效果也一样

主要问题: 我如何才能使热键工作,只有当弹出面板显示

子问题: 主页面也有热键,我希望在显示popuppanel时禁用这些热键。根据我的说法,这也应该是可能的选择,纠正我,如果我错了


提前谢谢

它不起作用,因为热键(特别是
keyup
keydown
事件)只能在可聚焦的元素上工作。如果没有对焦,面板不知道您正在“按”按钮


保持热键全局性,当您处理事件时,您可以检查popupPanel是否显示(JS对象的属性
show

所以基本上我应该做:,(JS)函数checkAndDoAction(){if(panel.show()){setfocus()}不,您不需要设置焦点(而且您不能),您将使用
面板。如图所示
决定调用哪个函数(全局函数或通过面板执行该操作的函数)。