1

JSF+PrimeFacesダイアログを使用して間違ったログインを行った後にパスワードをリセットするためにjQuery/Javascriptを使用する方法についてアドバイスが必要です。

<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に問題が発生します。したがって、コロンの前に2つの\文字を使用して:(コロン)をエスケープする必要があります

于 2012-05-23T19:15:57.000 に答える
0

セレクターの#loginFormとの間にスペースを入れ、メソッドを使用してパスワード値をリセットします。:passwordval

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

:passwordセレクターのスペースは、実際にはの要素を検索し#loginFormます。

于 2012-05-23T19:09:30.717 に答える