我有一个简单的登录表单。我使用<p:ajax>
来调用<p:blockUI>
(请参阅this问题)。
<h:commandButton id="anmeldung_button"
action="#{benutzerAnmeldung.anmelden}" value="Anmelden"
styleClass="btn btn-info btn-sm">
<p:ajax process="@form" update="@form"/>
</h:commandButton>
<p:blockUI id="block" block=":anmeldung" trigger="anmeldung_button" />
我正在使用<o:highlight />
突出显示无效输入。这很好用。
它也完美地与<f:ajax>
合作。
显然,它不适用于<p:ajax>
。
我怎样才能做到这一点?
答案 0 :(得分:2)
这是由<p:ajax>
尝试通过doEval()
执行不完整脚本后重新调整活动元素所引起的(如handleReFocus()
function in core.ajax.js
script中所示)。但是,当您通过单击命令按钮而不是在输入内部按 Enter 提交表单时,该活动元素将成为命令按钮本身,而不是输入文本。您可以通过使用输入键提交表格。您将看到焦点正确完成。
在您的特定情况下,有两种方法可以解决此问题:
利用PrimeFaces&#39;通过<p:focus>
拥有自动对焦功能,该功能位于表单内,如下所示:
<h:form id="anmeldung">
<p:focus context="anmeldung" />
...
</h:form>
它还会自动考虑无效的输入字段。
在JavaScript中将PrimeFaces.customFocus
设置为true
,以便handleReFocus()
函数无法完成其工作。
<script>PrimeFaces.customFocus = true;</script>