предотвращение двойного щелчка по кнопке при вызове ajax - PullRequest
2 голосов
/ 20 декабря 2010

Я заметил, что мои пользователи иногда нажимают на кнопки дважды, возможно, никто не сказал им, что одного щелчка достаточно.

Какой лучший способ предотвратить двойной щелчок? Я в основном скрываю кнопку и показываю «загрузочный» gif, но этого явно недостаточно ...

Ответы [ 4 ]

2 голосов
/ 20 декабря 2010

Если они щелкают достаточно быстро, чтобы вызвать событие двойного щелчка, верните false.

ondblclick="return false"

РЕДАКТИРОВАТЬ: Это не отменит событие одного щелчка, поэтому проблема все еще существует.

2 голосов
/ 20 декабря 2010

Обычно отключение / скрытие / замена кнопки должно работать. Если они работают очень быстро, попробуйте установить для переменной значение false при запуске скрипта, верните значение true, установите значение true после первого щелчка.

var alReadyClicked = false;
function click(){
 if (alreadyClicked) 
  return false;
 alreadyClicked = true;
}

Не забудьте установить значение false, когда пользователь сможет снова щелкнуть.

1 голос
/ 11 января 2011

Я только что обнаружил функцию jQuery .one (), которая может быть полезна для этой цели!здорово!

0 голосов
/ 20 декабря 2010

Другой пример использования флага

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8 />
        <title>test dbl click</title>
    </head>
    <body>
        <button id="btn1">Click Away</button>
        <div id="out"></div>
        <script type="text/javascript">

            function addMessage( msg ){
                document.getElementById("out").innerHTML += (new Date().toTimeString()) + " : " + msg + "<br/><br/>";
            }

            function singleClick(){
                addMessage( "single");
            }

            function addDoubleClickProtection( element, fncToCall ){            
                var isClicked = false;
                var timer = null;
                element.onclick = function(){
                    if(!isClicked){
                        isClicked = true;
                        timer = window.setTimeout( function(){ isClicked = false; }, 200);  
                        return fncToCall();
                    }
                }
            }

            addDoubleClickProtection( document.getElementById("btn1"), singleClick );

        </script>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...