2017-09-04 10 views
0

私は、フェードイン、数秒待ってフェードアウトしてエラーを表示する小さなエラーメカニズムを持っています。私はそれがプロセス全体を実行するようにしても動作しますが、エラーを示す多くのものをすばやくクリックすると、ここで間違っています。エラーメッセージが2回点滅しないようにするにはどうすればよいですか?

エラーメッセージが表示され、次にフェードインまたはフェードアウトします。だから私はエラーの現在の状態を確認するには、is_fadingと呼ばれるvarを追加することでこれを解決しようとしましたが、それは動作しませんでした。ここに私のコードはあります:

errors: { 
    is_fading: false, 

    render: function (msg) { 
     GroupManagement.error.html(msg); 

     if (GroupManagement.errors.is_fading == true) 
     { 
      GroupManagement.error.delay(1500).fadeOut(); 
      GroupManagement.errors.is_fading = false; 
      return; 
     } 
     else 
     { 
      GroupManagement.error.fadeIn('normal', function() 
      { 
       GroupManagement.errors.is_fading = true; 
       $(this).delay(1500).fadeOut(); 
       GroupManagement.errors.is_fading = false; 
      }); 
     } 
    } 
}, 

これは私が問題を解決すると思ったものですが、そうではありません。なぜ誰が知っていますか?

+0

フェードアウトは2パラメータを取得します。 completeは、実際には、 "fadeOut"操作が完了したときに呼び出されるコールバック関数です。したがって、コードを変更し、これに基づいてis_fadingフラグを設定する必要があります... – Mehdi

+1

Mehdiありがとう、fadeOutにコールバック関数を追加したときに動作しました:) –

+0

@Mehdi OPがマークできるようにコード解答を追加しようとしましたあなたと将来の訪問者は助けを得ました。 –

答えて

0

クレジットが@Mehdiに行く、答えは:期間、および完全な:

errors: { 
    is_fading: false, 

    render: function (msg) { 
     GroupManagement.error.html(msg); 

     if (GroupManagement.errors.is_fading == true) 
     { 
      GroupManagement.error.delay(1500).fadeOut('', function() { 
       GroupManagement.errors.is_fading = false; 
      }); 
      return; 
     } 
     else 
     { 
      GroupManagement.error.fadeIn('normal', function() 
      { 
       GroupManagement.errors.is_fading = true; 
       $(this).delay(1500).fadeOut('', function() { 
        GroupManagement.errors.is_fading = false; 
       }); 

      }); 
     } 
    } 
}, 
関連する問題