Domanda

Per qualsiasi collegamento con una particolare classe CSS, vorrei controllare se i collegamenti si aprono nella stessa finestra, in una nuova finestra o in un pop-up (usando onclick), in base alla selezione dell'utente da un gruppo di radio pulsanti - e quindi salva quella scelta in un cookie (tutto usando jQuery). Qualcuno sa come realizzare questo?

È stato utile?

Soluzione

Probabilmente è così che lo farei ... (avrai bisogno del plugin cookie jQuery ):

<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>

Modifica: Mi dispiace di non averlo provato prima. Ho avuto alcuni errori di battitura e ho dimenticato di impostare il cookie per iniziare (scusate). L'ho provato e ora funziona con il tuo HTML. Usa il codice appena modificato sopra. ; -)

Modifica 2: ho aggiunto un collegamento diretto al plug-in per i cookie nel caso in cui, per qualche motivo, non stai usando quello giusto.

Modifica 3: Personalmente, non imposterei il pulsante di opzione come controllato in javascript ... credo che tu possa accedere allo stesso cookie nella tua lingua lato server. Ma ho fornito un modo per funzionare nel mio codice appena modificato.

Modifica 4: L'impostazione iniziale del bug dei pulsanti di opzione selezionati è stata corretta. Questa volta dovrebbe davvero funzionare davvero. Davvero. o_0

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top