2017-01-14 8 views
0

私はここで答えを得て、少しの検索とnothingsを行っています。JQueryの場合setTimeout関数内のブロックが機能しない場合

私が作成しているページでは、メインエリアに1回ログインするようにしています(そのすべてを1ページに表示し、各リンクは非表示になっているdivを持ち込みます)。

は私が管理者としてログインが成功した場合、それは隠しを作成するというのが私のPHPで

を設定している、私はあなたが管理者としてログインするまで非表示にするためのボタンが欲しいことを、管理エリアを持っていますあなたが管理者である場合にチェックされるチェックボックスは、管理者でない場合にはチェックされません。

$("#adminlogin").submit(function() { 
    setTimeout (function() { 
     if ($('#admintrue').is(':checked')){ 
      $('#adminbutton').show('fade',500); 
     } else { 
      $('#adminbutton').hide('fade',500); 
     } 
    }, 1000); 
}); 

私は(jqueryのは、PHPよりも速く動作するので)これを実行しようとしましたが、私はあなたがsetTimeout関数内であれば、クエリを置くことができないものを見ることができますから。

これを達成できる方法はありますか?

+1

これは 'submit'ハンドラにあるという事実と関係しています。一度あなたがページを提出すると、ブラウザはフォーム 'action'がどんなものにでもリダイレクトされます... setTimeoutのような非同期コードはそれを停止しません –

+0

質問は明確ではありません。すべてがsetTimeoutで動作します –

+1

@RanjitSingh - 'submit'イベントハンドラに含まれていない場合、フォームが –

答えて

0

ではなく、このいずれかを試してみてくださいありがとう:また

... 
if($('#admintrue:checked')) { 
... 

、あなたの代わりに隠されたチェックボックスのクラス/ IDを使用することができ、それは次のように確認することができます。

... 
if($('#myID')) { 
... 

または

... 
if($('#myElement').hasClass('my-class')) { 
... 
+0

は:確認チェックが働いていたが、私は最小限のあなたの方法を好みますコード。他のコメントでJaromandaが頭に釘を打たれたのは、フォーム提出がページをリフレッシュし、イベントハンドラを効果的に停止していたからです。 –

関連する問題