1

我需要有关如何使用 jQuery / Javascript 在使用JSF+PrimeFaces对话框登录错误后重置密码的建议。

<p:dialog header="Login" id="loginDlgId" widgetVar="loginDlg" >
    <h:form id="loginForm">
        <h:panelGrid columns="2">
            <h:outputLabel for="username" value="Username:" />
            <p:inputText value="#{loginBean.username}" id="username" required="true" label="username" />
            <h:outputLabel for="password" value="Password:" />
            <h:inputSecret value="#{loginBean.password}" id="password" required="true" label="password" />
            <p:commandButton value="Login" id="loginDlgButton" update=":loginButtonForm" 
                                action="#{loginBean.login}" 
                                oncomplete="handleLoginRequest(xhr, status, args)"/>
        </h:panelGrid>
    </h:form>
</p:dialog>
<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        if(args.validationFailed || !args.loggedIn) {
            jQuery('#loginDlgId').effect("shake", { times:3 }, 100);
            if (!args.validationFailed) {
                $('#loginForm:password').html('');  // this doesn't have any effect
                jQuery('#loginForm:password').text('');   // this doesnt' have any effect, too
            }
        }
    }
</script>    

如您所见,在 Javascript 函数中,handleLoginRequest我做了 2 次努力来重置密码文本,但没有结果(而且似乎也没有错误)。此外,任何在这种情况下使用 jQuery 的链接/参考,都将受到欢迎。

4

2 回答 2

1

\\在前面加上:

您的选择器应如下所示'#loginForm\\:password'

INMO'#loginForm\\:password'"#loginForm :password"(但这是我个人的想法)更有效(更快)

解释

:(冒号)的存在会导致 JQuery 出现问题。因此,我们需要在冒号前使用两个 \ 字符来转义 :(冒号)

于 2012-05-23T19:15:57.000 回答
0

#loginForm在选择器之间和之间放置一个空格:password,并使用val方法重置密码值:

$("#loginForm :password").val("");

选择器中的空格实际上是:password#loginForm.

于 2012-05-23T19:09:30.717 回答