2016-05-14 9 views
2

クリックするとクラスに.errorを追加します.2秒後にこのクラスを削除しますが、ページの再ロード/リフレッシュは行いません。delay()をjQueryで使用しました。遅れてもページをリフレッシュしないでクラスを追加してから削除してください

$('#username').addClass('error').delay(2000).removeClass('error'); 

しかし、機能しません。

その後、私はsetTimeout()を試しました。

動作していますが、ページを再読み込みしています。特定の時間後にクラスを追加して削除するものが必要ですが、ページをリフレッシュ/リロードしないでください。

事前にお手伝いしていただきありがとうございます。 jQueryとsetTimeout関数の使用

+4

は '使用することはできませんを遅延() 'ではない方法のため* "QUEUEABLE" *アニメーションのように。あなたのコードを示してください。 'setTimeout()'がそれ自身でページをリロードする理由はありません – charlietfl

+0

これは私のコードです(そして望ましくないページをリロードしています): $( '#username')。addClass( 'error')。 (){\t \t \t \t $(this).removeClass( 'error'); \t}、2000); – vinayofficial

+0

これは、グローバルウィンドウ関数のときに 'setTimeout()'をjQueryメソッドとして連鎖しようとしているため、エラーをスローします。私の推測では、これをフォーム送信ハンドラで使用していて、エラーにより送信ハンドラが破られ、フォームがデフォルトプロセスで送信されます。 – charlietfl

答えて

2

var $elm = $("#username").addClass("error"); 
 
setTimeout(function() { 
 
    $elm.removeClass("error"); 
 
}, 2000);
.error{ 
 
    color:red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="username">USER NAME</div>

+0

これはjQueryの答えです。 – doug65536

+1

@ doug65536はい、OPがjqueryで純粋なjavascriptではなかったので、ありがとう –

4

var element = document.getElementById('username'); 
 

 
element.classList.add('error'); 
 

 
window.setTimeout(function() { 
 
    element.classList.remove('error'); 
 
}, 2000);
#username { 
 
    width: 100%; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    color: white; 
 
    background-color: green; 
 
    text-align: center; 
 
    transition: background-color .25s linear; 
 
} 
 
#username.error { 
 
    background-color: red; 
 
}
<div id="username">Username</div>

+0

すでにクラスがあるかどうかを確認してください。 – Tomato

+0

これは本当に必要ではありません。クラスがすでに存在する場合は、追加しません。 –

+0

はい、2秒後に削除されますが、予期しないことがあります。 – Tomato

関連する問題