<!DOCTYPE html>
<html lang="fr"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Title</title>
</h:head>
<h:body onload="PF('dlg').show()">
<p:dialog widgetVar="dlg"
resizable="false" closable="false" >
<h:form id="form">
<h:outputLabel for="name" value="Name:" />
<p:inputText id="name" />
<p:commandButton id="submitButton" value="Submit" />
<p:commandButton id="cancelButton" value="Cancel"
onclick="alert('ok'); PF('dlg').hide();" />
</h:form>
</p:dialog>
</h:body>
</html>
问题是Primefaces对话框在隐藏后保持焦点:当按空格键或取消对话框后输入键时,您可以观察到警报'ok'将再次显示!
当尝试使用:onclick="alert('ok'); PF('dlg').hide(); PF('dlg').blur()"
或onclick="alert('ok'); PF('dlg').hide(); PF('dlg').focusout()"
从对话框中设置焦点时,似乎自从对话框重新出现后重新加载整个身体......
我做错了吗?这是对我的误解还是Primefaces中的错误? 任何帮助将不胜感激:)
答案 0 :(得分:0)
正在使用:
document.activeElement.blur()
而不是:
PF('dlg').blur()