Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Повторный клик по ссылке через время (https://javascript.ru/forum/dom-window/36168-povtornyjj-klik-po-ssylke-cherez-vremya.html)

Tolys 06.03.2013 00:16

Повторный клик по ссылке через время
 
Подскажите, как реализовать скрипт, который запретит часто нажимать на ссылку, точнее запретит на время. Если быть совсем точным, то человек после нажатия ссылки повторно сможет нажать только через час, например:D

Tolys 06.03.2013 00:19

Мне подсказали в чате код, но я толком не смог разобраться:
onclick="var a = this.href, t = this; t.href ='#'; setTimeout(function() { t.href = a }, 1000)"

Хотелось бы на примере посмотреть

danik.js 06.03.2013 05:01

При клике по ссылке запоминаешь время в localStorage. При последующем клике сначала проверяешь сколько времени прошло, и в случае чего предотвращаешь переход по ссылке.

Tolys 06.03.2013 08:25

а можно на примере показать?

ksa 06.03.2013 08:46

Цитата:

Сообщение от danik.js
При клике по ссылке запоминаешь время в localStorage. При последующем клике сначала проверяешь сколько времени прошло, и в случае чего предотвращаешь переход по ссылке.

Мне больше понравилась идея выше... :)
Вот мой вариант

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function (){
	$('a').click(function (){
		var o=$(this);
		if (o.data('on')==0) {
			alert('Действие приостановлено');
			return
		};
		alert('Действие выполнено');
		o.data('on',0);
		setTimeout(function (){
			o.data('on',1);
		},3000);
	});
});
</script>
</head>
<body>
<a href='#' data-on='1'>test</a>
</body>
</html>

danik.js 06.03.2013 09:10

Я думал под ссылкой подразумевается ссылка, а не кнопка. Почему люди не хотят называть вещи своими именами?
<a href="#">Ссыль</a>
<script>
    var delay = 1000 * 2; // 2с
    var link = document.querySelector('a');
    link.onclick = function() {
        var lastTime = +localStorage.lastTime;
        var nowTime = +new Date();
        if (lastTime && (lastTime + delay > nowTime)) {
            alert ('Низя!');
            return false;
        } else {
            localStorage.lastTime = nowTime;
        }
    }
</script>

ksa 06.03.2013 09:29

Цитата:

Сообщение от danik.js
Я думал под ссылкой подразумевается ссылка

Х/з чего там у автора... :D

Tolys 06.03.2013 12:53

danik.js,
неплохая идея))

Tolys 06.03.2013 12:56

а вот ещё вопрос, этот скрипт будет сразу для всех выполняться или для каждого персонально?

ksa 06.03.2013 13:01

Цитата:

Сообщение от Tolys
этот скрипт будет сразу для всех выполняться или для каждого персонально?

На какому элементу присвоиш обработчик - на том и будет выполняться.

В примере присваивается всем элементам "a"...


Часовой пояс GMT +3, время: 19:42.