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 填充文本字段?

Primefaces - 当焦点在输入字段中时,Jquery 热键只工作一次

值更改侦听器在 primefaces 日历中不起作用

使用ajax从jsf中的primefaces树选定项设置primefaces selectOneMenu默认值