我需要使用" keypress"进行一些自定义。基于自动完成组件的事件,但在我看来它完全由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事件以使用自动完成组件?如果是这样,最好的方法是什么?非常感谢您的时间和帮助!
答案 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()" />
希望这会对你有所帮助。祝你好运!