Primefaces对话框在隐藏后保持焦点

时间:2013-12-14 09:53:53

标签: javascript jsf primefaces

H1大家好!让JSF 2.0中的以下场景(Mojarra 2.2,Glassfish 4, Primefaces 4.0 ):

<!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中的错误? 任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

正在使用:

document.activeElement.blur()

而不是:

PF('dlg').blur()