0

なのでボタンは2つ。

ボタン a: はボタンです。(#ボタン1)

ボタン b: 偽の送信ボタン。(#right_r)

ボタン c: 送信ボタン。(#右)

デフォルトでは、ボタン A が表示され、クリック時に Default() が防止され、エラー メッセージが表示されます。

ボタン A をクリックすると、タイムアウト 8000 が設定されるため、8 秒でボタン B がボタン C に置き換えられます。

しかし、問題は次のとおりです。

ユーザーがボタン A を複数回クリックすると、多くのタイムアウトが設定されます。

私がやりたいことは、新しいタイムアウトを設定する前に以前のタイムアウトを強制終了することです。like stop it.

私のコード:

$(document).ready(function() {
    $("#right_r").click(function(event) {
        event.preventDefault();
        $("#error").slideDown("slow");

        setTimeout(function() {
            $("#error").slideUp("slow");    
        }, 1000);
    });
    $("#button1").click(function() {
        setTimeout(function() {
            $("#right_r").hide();
            $("#right").show();
        }, 8000);
    });
});

ありがとう。

4

2 に答える 2

0

これを試して

var right_r_timeout = null, runelocus_timeout = null;
$(document).ready(function() {
    $("#right_r").click(function(event) {
        event.preventDefault();
        $("#error").slideDown("slow");

        if (right_r_timeout != null) {
            clearTimeout(right_r_timeout);
            right_r_timeout = null;
        }
        right_r_timeout = setTimeout(function() {
            $("#error").slideUp("slow");
        }, 1000);
    });

    $("#runelocus").click(function() {
        if (runelocus_timeout == null) {
            clearTimeout(runelocus_timeout);
            runelocus_timeout = null;
        }
        runelocus_timeout = setTimeout(function() {
            $("#right_r").hide();
            $("#right").show();
            runelocus_timeout = null;
        }, 8000);
    });
});

https://developer.mozilla.org/en/docs/DOM/window.setTimeoutを参照してください

于 2013-05-08T18:33:37.940 に答える
0

組み込みの遅延メソッドを使用した場合、これは簡単です..

$("#error").stop(true,true).slideDown("slow").delay(1000).slideUp("slow")

ただし、アニメーション メソッドと'd メソッド.delay()のみを遅延させることに注意してください。.queue

于 2013-05-08T18:26:34.003 に答える