【发布时间】:2017-05-03 00:25:02
【问题描述】:
使用 JSF 和 PrimeFaces 6.1 我有一个 inputText 字段:
<p:inputText value="#{backingBean.stringField}">
<p:ajax event="valueChange" update="@form" />
</p:inputText>
在同一个表单中是一个命令按钮:
<p:commandButton id="btnDoThatThing"
ajax="true"
immediate="true"
update="@form"
process="@this"
action="#{backingBean.doThatThing}"/>
当我
- 更改 inputText 字段,
- 然后单击命令按钮以外的位置
- 点击命令按钮
一切都按预期工作。但是如果我:
- 更改 inputText 字段,
- 立即命令按钮
该按钮没有被触发,因为第一次单击 commandButton 触发了在 inputText 字段中发生的 valueChange 事件。
如果我再次单击它,按钮操作最终会发生。
现在,如果我将 p:ajax event="valueChange" 更改为 p:ajax event="keyup",第一次单击 commandButton 会按预期工作,但不幸的是 inputField 上的 keyup 事件非常麻烦,并且您在该字段中失去了功能(复制/粘贴文本,文本选择、“快速”输入等)
关于如何在 inputText 字段中启动更改事件,并在用户在 inputText 字段中键入后立即单击按钮时触发 commandButton 操作有什么想法吗?
感谢您的宝贵时间!
【问题讨论】:
-
“模糊”事件呢?
-
不幸的是,'blur' 也有类似的问题。
标签: ajax jsf primefaces jsf-2