Я думаю, что самый разумный способ справиться с этим - отключить ссылку, когда она нажата, а затем снова включить ее, когда функция будет завершена.Предполагая, что у вас есть jQuery, что-то вроде ...
$('#button').click(function () {
$(this).attr("disabled", "true");
doTheFunction();
$(this).attr("disabled", "false");
});
Если вам действительно нужно подождать некоторое время после вызова функции, то вы можете использовать setTimeout для повторного включения кнопки.
$('#button').click(function () {
$(this).attr("disabled", "true");
doTheFunction();
var btn = $(this);
setTimeout(function () {
btn.attr("disabled", "false");
}, 5000); // reenable the button 5 seconds later
});
РЕДАКТИРОВАТЬ: (для комментария ниже)
Для ссылки, я бы смоделировал выше, добавив и удалив класс, так как вы правы, нет отключенного атрибута.
$('#link').click(function () {
if ($(this).hasClass('disabled_link')) {
return;
}
$(this).addClass("disabled_link");
doTheFunction();
var link = $(this);
setTimeout(function () {
link.removeClass("disabled_link");
}, 5000); // reenable the button 5 seconds later
});