我正在使用PrimeFaces并有一个p:inputText字段,我需要根据p:inputText中的最新击键来更新视图上的一些组件。这是代码:
<p:inputText value="#{customerLController.surnameFilterConstraint}"
id="surnamefilterfield">
<p:ajax event="keyup"
update=":custForm:custDataTable"
listener="#{customerLController.focusSurname}"
oncomplete="primeFacesId('surnamefilterfield')"/>
</p:inputText>
问题是,即使在箭头键击的情况下,上面的代码也会启动 Ajax(考虑到代价高昂的更新,我宁愿避免这种情况)。理想情况下,我想要一个不同版本的p:ajax event="change",其条件是更改在击键时发音,而不是在用户按 Enter时发音(这就是现在发生的情况)。
如果p:ajax组件不允许过滤掉某些keyup事件,那么我认为唯一的(?)替代方法是在客户端调用 JavaScript,然后在 Javascript 中实现 Ajax 调用,但我会放弃使用 PrimeFaces p:ajax组件的便利,不是吗?