1

Stack Overflowでこの問題の変種を見つけましたが、特定の状況に一致するものはありません。うまくいけば、誰かがいくつかの洞察を持っています。

現在、ボタン(技術的にはアンカータグ)が押されたときにアイテムのリストを生成するWebアプリケーションに取り組んでいます。問題は、ユーザーがこのボタンを2回続けてすばやく押すと、リストが2回生成されることです。ボタンは、重複を防ぐためにリストを生成する前にリストをクリアするためのものですが、スクリプトの相互作用の方法に関する何かがこれを引き起こしています。バグ。ボタンは、サーバーにajax呼び出しを行うことでリストを生成します。

ここで、ボタンが押されたときにブール値を1に反転し、ボタンが再び0になるまでボタンを何もしないようにすることで、このバグを修正しようとしました。これは、コードのどこに値を再度設定しても機能しないようです。ajaxGet関数の最後、およびページの読み込み後に値を設定しようとしましたが、どちらの解決策も機能しません。

理想的には、ページの読み込みとレンダリングが完全に終了したらすぐにボタンを有効にする方法が必要です。最終的に必要なのは、ユーザーがボタンを2回続けて押さないようにする方法です。私はこれにタイマーを使用することを検討しましたが、それに頼る必要はありません。

何か案は?コードスニペットが必要な場合はお知らせください。

===========================================

編集:あなたの答えをみんなに感謝します!私は問題を解決するためにFibrewireの答えの変形を使用しました、そしてそれはうまくいきます。ボタンが呼び出すメソッドの先頭に、次のコードを配置します。

if (actionsDisabled == 1) {
    return;
}//if
else {
    actionsDisabled = 1;
    setTimeout("actionsDisabled=0;", 1000);
}//else

ここで、actionsDisabledはグローバルブール値です。気密性はそれほど高くないかもしれませんが(特に、リストの読み込みに1秒以上かかると問題が発生します)、エレガントで機能的であり、サーバーリクエストを減らすという追加のボーナスがあります(トラフィックの場合)問題が発生した場合は、呼び出しを5秒または10秒に1回などに制限できます。再度、感謝します!

4

1 に答える 1

1

最初のクリック後にボタンを無効にすることができます

一度クリックした後にボタンを無効にする

また、ユーザーが将来ボタンをもう一度クリックできるようにする必要がある場合は、setTimeout()メソッドを使用して、少し間を置いてからボタンを再度有効にすることができます。

http://www.w3schools.com/jsref/met_win_settimeout.asp

于 2012-07-06T13:38:58.410 に答える