2013-03-11 8 views
5

ログインが成功しなかった場合にメッセージを表示する簡単なログインページがあります。私はこのメッセージが5秒後に消えてしまいたいと思っていますが、それを動作させることはできません。タイムアウト後にメッセージを消す方法

(無関係なものの大部分を削除)、ログイン一部:

<h:inputText title="Name" value="#{authBean.name}" id="username" /> 
<h:inputSecret title="Password" value="#{authBean.password}" id="password" /> 

<p:commandButton id="loginButton" action="#{authBean.loginAndRedirect}" 
      update="@form" value="Login" /> 
<h:message id="messages" for="login:username" /> 
私がこれまで試してみました何

をコマンドはFirebugのコマンドラインは完璧に動作して入力された:$('[id$=messages]').fadeOut();

今度はタイマーでトリガーする方法が必要です:

このようなボタンでコールバックを設定しても効果がありません(エラーなし):

<p:commandButton ... oncomplete="setTimeout(5000, '$('[id$=messages]').fadeOut())" ... /> 

私はonclickoncompleteでなく、効果なし、エラーなしでそれを試してみました。 message要素にprimfaces効果(ラップjQueryのエフェクト)を使用してみました

<h:message id="messages" for="login:username" errorClass="errorMessage"> 
    <p:effect type="fadeout" event="load" delay="5000"> 
    <f:param name="mode" value="'hide'" /> 
    </p:effect> 
</h:message> 

効果なし、エラーなし。

答えて

5

あなたはsetTimeout()内部function閉鎖を逃しています。また、関数を呼び出すことは、インラインJavaScriptを使用するよりも優れています。読んだりデバッグしたりする方が簡単です。

など。

function fadeoutfunction(){ 
setTimeout(function(){ 
    $('[id$=messages]').fadeOut(); 
},5000); 
} 
+0

+1、バイフェン。それはうまく動作します。 – kostja

+0

ようこそ...うれしい..幸せなコーディング.. :) – bipen

2
<p:commandButton ... 
oncomplete="setTimeout(function(){$('[id$=messages]').fadeOut()},'5000')" ... /> 
+0

+1のおかげで

<p:commandButton ... oncomplete="fadeoutfunction()" ... /> 

、K D.それは私が一重引用符で5000の周りに二重qoutesを交換し、一度働きました。 – kostja

+0

ありがとう:) +1私もそれを動作させるために提供されたコードを編集してください。あなたは答えとしてそれをマークしてください –

+0

申し訳ありませんが、K D.名誉は変更なしで動作する唯一の答えを提供するためにbipenに行く。 – kostja

関連する問題