PrimeFaces ajax 更改输入和对另一个字段的操作
Posted
技术标签:
【中文标题】PrimeFaces ajax 更改输入和对另一个字段的操作【英文标题】:PrimeFaces ajax change of input and action on another field 【发布时间】:2015-10-06 09:37:55 【问题描述】:我有这段代码,当输入元素的值发生变化时,我会监听并更新其他一些字段。
问题是,当我通过键入一些内容来更改此输入字段的值并使用 id:submit
命中 commandButton
时,它会触发侦听器(可能是因为在 @987654324 期间检查了值的变化@ 在场上),但不是听众X
,即actionListener
代表commandButton
。所以我不得不再次单击该按钮才能调用侦听器X
。
当然,如果我通过单击其他地方导致输入字段模糊,然后单击commandButton
,它会按预期工作。看起来当输入字段的模糊与commandButton
的点击同时发生时,只会发生模糊 - 按钮的点击被简单地忽略了。有什么想法吗?
<p:inputText ...>
<p:ajax event="change" update="..." listener="..." />
</p:inputText>
...
<p:commandButton id="submit" ... actionListener="X" />
编辑:我使用 PrimeFaces v5.1 和 JSF v2.1.19,FWIW。
【问题讨论】:
我在p:ajax
中使用keyup
事件来避免这个问题。
这能回答你的问题吗? PrimeFaces inputText ajax event=valueChange fires AFTER commandButton clicked
【参考方案1】:
我在使用 JSF 和 PrimeFaces 6.1 时遇到了类似的问题(可能完全相同),并在此处发布:
PrimeFaces inputText ajax event=valueChange fires AFTER commandButton clicked
@jasper-de-vries 回复了一个有效的、有效的解决方案 :)
他的帖子的快速摘要是将 ajax 更新更改为 seletor,如下所示:
<p:ajax update="@(form :input:not(button))" />
这将更新特定元素(表单)而不是其他元素(按钮),因为 valueChange 或 change 事件会更新所有表单,包括按钮,然后忽略按钮的第一次点击。
【讨论】:
您可以将此问题标记为与您的问题重复。使用问题下方的关闭“按钮”以上是关于PrimeFaces ajax 更改输入和对另一个字段的操作的主要内容,如果未能解决你的问题,请参考以下文章
Primefaces AJAX update =“@ form”两次调用监听器
当 PrimeFaces ajax 请求正在进行时,将鼠标光标更改为忙碌模式
发生验证错误后,如何使用 PrimeFaces AJAX 填充文本字段?