<p:autocomplete> </p:autocomplete>的按键事件

时间:2014-10-13 15:15:43

标签: javascript jquery jsf primefaces autocomplete

我需要使用&#34; keypress&#34;进行一些自定义。基于自动完成组件的事件,但在我看来它完全由Primefaces注册。到目前为止,我尝试了以下两种方式:

1)

    <p:autoComplete id="inputResID" 
                    value="#{searchController.searchQuery}" 
                    completeMethod="#{searchController.completeText}" 
                    size="30" 
                    maxResults="10" 
                    multiple="true" 
                    styleClass="searchField" >
    <p:ajax event="keypress" 
            actionListener="#{searchController.doSomething}" />
    </p:autoComplete>  

这根本没有效果; 2)

    <script>
    jQuery(document).ready(function() {
        jQuery('.searchField').find('input').keypress(
            function(ev){
                var keyCode = ev.keyCode;
                if (keyCode == 44) {
                    updateSearchField();
                }
                }
        );
    });
</script>

...

<p:autoComplete id="inputResID" 
                value="#{searchController.searchQuery}" 
                completeMethod="#{searchController.completeText}" 
                size="30" 
                maxResults="10" 
                multiple="true" 
                styleClass="searchField" >
    <p:ajax event="itemSelect" listener="#{searchController.handleSelect}" />
    <p:ajax event="itemUnselect" listener="#{searchController.handleUnselect}" />
</p:autoComplete>

...

<p:remoteCommand name="updateSearchField" update="inputResID" /> 

这将更新输入字段,但它不会执行&#34;#{searchController.completeText}中定义的工作&#34; ....所以我的问题是,如果有可能的话添加自定义的ajax事件以使用自动完成组件?如果是这样,最好的方法是什么?非常感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:0)

你可以这样做:

<强> JS:

function customFunction() {
    jQuery('input', '.searchField').keypress( function(e) {
        var keyCode = e.keyCode || e.which;
        if (keyCode == 44) {
            updateSearchField();
        }
    });
}

<强> XHTML

<p:ajax event="keypress" onstart="customFunction()" />

希望这会对你有所帮助。祝你好运!