捕获无输入字段的按键ajax事件

Catch key pressed ajax event without input fields

本文关键字:ajax 事件 字段 输入      更新时间:2023-09-26

在合作伙伴管理中,当输入合作伙伴编号或名称时,会显示合作伙伴信息和照片,并隐藏介绍合作伙伴编号和名称的输入文本。

然后,当按下ESC或ENTER键时,我想在我的backingbean中执行一个方法

我在视图中用以下javascript捕获keyup事件:

<script type="text/javascript">
    $(document).bind('keyup', function(e) {
        debugger;
        if (arguments[0].key == 'Esc') {
            alert("YEAH");
           }
    });
</script>

如何调用我的backingbean方法???

public void listener() {
    switch (keyCode) {
    case(27):
       // switch boolean attribute in bean to render view hidden panel  
    }
}

我试过使用远程命令或ajax监听器:

<p:remoteCommand name="remote" actionListener="#{registerVisitBean.listener}" update="input_table"/>

<f:ajax event="keyup" execute="@this keyCode" listener="#{registerVisitBean.listener}" update="input_table" />
<h:inputHidden id="keyCode" binding="#{keyCode}" value="#{registerVisitBean.keyCode}" />    

当选择输入文本时,这两种方法都会捕获keyup,但当我隐藏它以显示合作伙伴信息时,侦听器停止工作。

有什么想法吗?

谢谢!J

<script type="text/javascript">
    $(document).bind('keyup', function(e) {
        debugger;
        if (arguments[0].key == 'Esc') {
            alert("YEAH");
            // suppose you want to call your listener here
            remote([{name: 'key', value: arguments[0].key}]);
           }
    });
</script>
<p:remoteCommand name="remote" actionListener="#{registerVisitBean.listener}" update="input_table"/>

public void listener() {
   Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
   String keyCode = params.get("key");
   // your code     
}