在没有输入字段的情况下捕获按键ajax事件

时间:2014-10-26 13:25:15

标签: java javascript ajax jsf

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

然后我想在按下ESC或ENTER键时在我的辅助bean中执行一个方法

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

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

如何调用我的支持bean方法???

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}" />    

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

有什么想法吗?

谢谢! Ĵ

1 个答案:

答案 0 :(得分:2)

<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     
}
相关问题