Link de controle Preferências com controles de botão de rádio e jQuery
-
05-07-2019 - |
Pergunta
Para qualquer links com uma classe CSS específica, gostaria de controlar se os links abrem na mesma janela, uma nova janela ou um pop-up (usando OnClick), com base na seleção do usuário de um grupo de botões de rádio- e, em seguida, salve essa escolha em um cookie (tudo usando jQuery). Alguém sabe como fazer isso?
Solução
Provavelmente é assim que eu faria ... (você precisará do JQuery Cookie Plugin):
<script language="javascript">
$(function() {
if($.cookie('link_pref')) {
var link_pref = $.cookie('link_pref');
$('#link_options_form :radio[value="'+ link_pref+'"]')
.attr('checked','checked');
}
$.cookie('link_pref',$('#link_options_form :radio:checked').val(), {expires: 0});
$('#link_options_form :radio').unbind('click').bind('click',function() {
$.cookie('link_pref', $(this).val(), {expires: 0});
});
$('a').unbind('click').bind('click',function() {
var link_pref = $.cookie('link_pref');
var href = $(this).attr('href');
var link_txt = $(this).text();
switch(link_pref) {
case 'new':
$(this).attr('target','_blank');
return true;
case 'pop':
window.open(href,link_txt,'width=640,height=480,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
return false;
case 'greybox':
// Other options found here:
// http://orangoo.com/labs/greybox/advance_usage.html
GB_show(link_txt, href);
return false;
default:
$(this).attr('target','_self');
return true;
}
});
});
</script>
<form id="link_options_form">
<label><input type="radio" name="link_options" value="same" /> Open in Same Window</label>
<label><input type="radio" name="link_options" value="new" /> Open in New Window</label>
<label><input type="radio" name="link_options" value="pop" /> Open in Pop-Up Window</label>
<label><input type="radio" name="link_options" value="greybox" /> Open in Greybox</label>
</form>
Editar: Desculpe por não ter testado primeiro. Eu tinha alguns erros de digitação lá e esqueci de definir o biscoito para começar (desculpe). Eu testei e agora funciona com o seu HTML. Use o código recém -editado acima. ;-)
Editar 2: Eu adicionei um link direto ao plug -in de cookie, por caso de você que, por algum motivo, não esteja usando o certo.
Editar 3: Pessoalmente, eu não definiria o botão de rádio como verificado em JavaScript ... você pode acessar o mesmo cookie no idioma do lado do servidor, acredito. Mas, forneci uma maneira que deve funcionar no meu código recém -editado.
Edit 4: A configuração inicial do bug dos botões de rádio marcada foi corrigida. Deve realmente funcionar realmente desta vez. Sério. O_0