【发布时间】:2012-07-26 03:34:06
【问题描述】:
我正在使用 PrimeFaces 并且有一个 p:inputText 字段,我需要根据该 p 中的最新击键来更新视图上的一些组件:输入文本。 代码如下:
<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 组件的便利,不是吗?
【问题讨论】:
-
我不熟悉 PrimeFaces,但如果你可以订阅
keypress而不是keyup事件,它应该可以解决这个问题。按键只会触发直接映射到可打印字符的键。 -
不,这不起作用,至少在我尝试过的 Firefox 和 Konkeror 中没有。
标签: javascript ajax primefaces