2013-04-29 14 views
6

Ho serie di checkbox, per cui ho scritto script jquery al clic. Quando l'utente fa clic sulla casella di controllo apre un'altra serie di checkbox e continua. Ora il mio problema è quando gli utenti controllano pochi di questi checkbox e passa alla pagina successiva e per qualche motivo torna nella pagina di checkbox. Quindi dovrei avere tutte le caselle che lui/lei ha controllato per aprire. Ho scritto un test casella di controllo quando i carichi domEvento trigger Jquery per casella di controllo

$(document).ready(function(){ 
    if($('.main').is(':checked')){ 
     $(this).trigger('click'); 
    }else{ 
     //do nothing 
    } 

    $('.main').click(function(){ 
     if($('.main').is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
    }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
    } 
    }); 
}); 

come vedete sopra. Principale è la classe di checkbox. Al clic di quello, sto aprendo un'altra serie di checkbox. Ora voglio che ciò avvenga automaticamente per le caselle spuntate quando visitano nuovamente la pagina

risposta

3

sessione uso o cookie per salvare i valori checkbox classe .main e controllato quelli di conseguenza quando si torna e quindi utilizzare il seguente codice:

<script type="text/javascript"> 
$(document).ready(function(){ 

    $('.main').each(function(){ 
     if($(this).is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
     }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
     } 
    }); 


    if($('.main').is(':checked')){ 
     $(this).trigger('click'); 
    }else{ 
     //do nothing 
    } 

    $('.main').click(function(){ 
     if($('.main').is(':checked')){ 
     var val = $(this).attr('alt'); 
     $('#'+val).show(); 
    }else{ 
     var val = $(this).attr('alt'); 
     $('#'+val).hide(); 
    } 
    }); 
}); 
</script> 
+0

Posso ancora tirare fuori i valori. Il mio problema è che voglio che quegli elementi di sottoclasse (che si aprono quando la casella di controllo è selezionata) si aprano automaticamente quando l'utente visita nuovamente la pagina –

+0

Hai provato il mio codice? – saifur

+0

Sì! L'ho fatto. Aiuto. –

0

Di solito è il browser che decide di "aiutare" e riempire i moduli che l'utente ha già completato. Non si deve fare affidamento sul browser poiché l'impostazione può essere facilmente modificata e può differire da utente a utente.

Invece, si potrebbe voler pensare di memorizzare le caselle di controllo cliccate in un cookie/localstorage o magari inviando ogni clic tramite AJAX al proprio server. Quindi, quando un utente arriva alla pagina, puoi controllare il contenuto del tuo cookie o recuperare gli elementi cliccati che sono stati salvati tramite AJAX; È quindi possibile ricreare i clic sugli elementi appropriati.

Ckeck questo post correlati per la gestione dei dati del cookie con jQuery - How do I set/unset cookie with jQuery?

+0

Posso ancora estrarre i valori. Il mio problema è che voglio che quegli elementi di sottoclasse (che si aprono quando la casella di controllo è selezionata) si aprano automaticamente quando l'utente visita di nuovo la pagina –

+0

Sì - dovrai simulare un po 'di innesco (' click ') 'per simulare un utente che fa clic su quegli elementi ... – Lix

+0

Come fare? –

1

mi basta usare un po 'di JSON e storage locale per tenere traccia di ciò che scatole erano stati controllati ecc

$(document).ready(function() { 
    if (localStorage.getItem('boxes')) { 
     var boxes = JSON.parse(localStorage.getItem('boxes')); 
     $.each(boxes, function (idx, val) { 
      var box = $('.main').eq(idx); 
      box.prop('checked', val); 
      $('#' + box.attr('alt')).toggle(val); 
     }); 
    } 

    $('.main').on('change', function() { 
     var val = $(this).attr('alt'), 
      boxes = {}; 

     $.each($('.main'), function (i, el) { 
      boxes[$(el).index('.main')] = el.checked; 
     }); 

     $('#' + val).toggle(this.checked); 
     localStorage.setItem('boxes', JSON.stringify(boxes)); 
    }); 
}); 

DEMONSTRATION

+0

Posso ancora tirare fuori i valori. Il mio problema è che voglio che quegli elementi di sottoclasse (che si aprono quando la casella di controllo è selezionata) si aprano automaticamente quando l'utente visita nuovamente la pagina –

+0

E con questo codice lo farà, per l'eternità anche! Solo per la sessione usa sessionStorage. – adeneo

Problemi correlati