Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
meu site tem alguns links externos eu gostaria de saber como bloquear o acesso por um determinado tempo quando o usuário acessar.
estou buscando uma pagina(http://forum.imasters.com.br/topic/553574-barra-de-menu-fixo-e-botao-proximo/)%C2%A0)que vai abrir o conteúdo externo e vai ter uma barra de menu fixa no top com um botão próximo, esse botão fica abre os próximos links externos na mesma página, com tudo se eu tiver 3 links em teoria quando chegasse ao fim da lista ele retornaria para o primeiro, mas eu gostaria de bloquear um acesso durante um tempo, assim o usuário não fica apertando próximo e repedindo sem parar.
EX.
link 1 - 1h
link 2 - 1min
link 3 - 5min
visitei o link 1 (começa a contagem regressiva) apertei em PRÓXIMO, abre o link 2(contagem) aperto em PRÓXIMO, abre o link 3(contagem) aperto em PRÓXIMO... se já deu o tempo ele abre o link 2, se passaram 1h aperto em PRÓXIMO, abre o link 1 e assim por diante.
muito difícil pra mim, desde já Obrigado.
Ronaldo,
Criei um JSFiddle pra ver se te ajuda: https://jsfiddle.net/4h3pnL26/
Se não estiver conseguindo acessar:
HTML
<button id="btn">Clique aqui</button>
CSS
#btn {
background: green;
color: white;
border: 0;
border-radius: 5px;
padding: 15px;
cursor: pointer;
}
.disabled {
background: grey !important;
cursor: not-allowed !important;
pointer-events: none;
}
JS
$button = $('#btn');
$button.click(function() {
$button.addClass('disabled').text('Aguarde...');
setTimeout(function() {
$button.removeClass('disabled').text('Clique aqui');
/* 2000 = 2 segundos. */
}, 2000);
});
Ao clicar no botão, o jQuery executa uma função click, atribui a propriedade disabled e o texto "Aguarde...". Após 2 segundos (dentro da função setTimeout), ele remove a classe Disabled e volta o texto "Clique aqui".
Abraços!
>
Ronaldo,
Criei um JSFiddle pra ver se te ajuda: https://jsfiddle.net/4h3pnL26/
Se não estiver conseguindo acessar:
HTML
<button id="btn">Clique aqui</button>
CSS
#btn {
background: green;
color: white;
border: 0;
border-radius: 5px;
padding: 15px;
cursor: pointer;
}
.disabled {
background: grey !important;
cursor: not-allowed !important;
pointer-events: none;
}
JS
$button = $('#btn');
$button.click(function() {
$button.addClass('disabled').text('Aguarde...');
setTimeout(function() {
$button.removeClass('disabled').text('Clique aqui');
/* 2000 = 2 segundos. */
}, 2000);
});
Ao clicar no botão, o jQuery executa uma função click, atribui a propriedade disabled e o texto "Aguarde...". Após 2 segundos (dentro da função setTimeout), ele remove a classe Disabled e volta o texto "Clique aqui".
Abraços!
Ex.
Abri o link1 o botão vai pra "Aguarde..." e ativa o contador regressivo 01:00:00 (o tempo do btn posso alternar no js que você fez).
Duvidas;
como posso fazer cada botão ativar seu contador regressivo? (Duplicar o código btn1, btn2...?)
da pra colocar um Onclick em cada btn?
Obrigado, Ajudou muito !!
Ronaldo,
Você pode fazer vários onclicks se precisar, mas leve em consideração que, por motivos de performance, não deva criar várias funções iguais ou até mesmo ficar chamando elementos toda hora pelo ID.
Quando você faz isso dessa forma:
$('#btn').click(function()){}
$('#btn2').click(function()){}
$('#btn3').click(function()){}
Toda vez o JS vai ter que percorrer o DOM, e isso impacta um pouco na performance.
Essa não é a melhor maneira de fazer também, mas já resolve seu problema: https://jsfiddle.net/4h3pnL26/3/
O novo código JS e HTML ficaram respectivamente:
<div class="wrapper">
<button class="btn">Clique aqui</button>
<button class="btn">Clique aqui</button>
<button class="btn">Clique aqui</button>
<button class="btn">Clique aqui</button>
</div>
$('.wrapper .btn').click(function() {
var button = $(this);
button.addClass('disabled').text('Aguarde...');
setTimeout(function() {
button.removeClass('disabled').text('Clique aqui');
/* 2000 = 2 segundos. */
}, 2000);
});
Abraços mano!
simples cara!
é so usar um Jquery, se vai usar
$('#id-do-link').click(função(){
$('#id-do-link').fadeOut(tempo de sejado);//aqui ele desaparece
setTimeout(function(){
$('#id-do-link').fadeIn(tempo de sejado); },3000);// aparece denovo
})
certo?
se entende ta resolvido se nao da um sinal bro.