Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Disabilitare checkbox

  1. #1

    Disabilitare checkbox

    Buon giorno.
    Ho una pagina con 10 domande, e per ognuna ci sono 6 checkbox per rispondere.
    Non è a risposta multipla,quindi attraverso la funzione di seguito:
    codice:
    function AbilitaDisabilita(massimo, ele){
                var cont=0;//imposto il contatore
                $('.'+ele.className).each(function(index, element) {//ciclo solo la classe selezionata 
                    if($(this, 'input:checkbox').is(':checked')){//alla spunta di un opzione aumento il contatore
                        cont++;
                        $('#_'+ele.className).text('ti restano '+(massimo-cont));//indico quante opzioni restano da selezionare
                    }
                    if(cont==massimo){//quando il contatore raggiunge il massimo disabilito i box non selezionati 
                        $('.'+ele.className).not(':checked').attr('disabled',true);
                        
                    }else{
                        $('.'+ele.className).removeAttr('disabled');
                        //$('.'+ele.className).prop('checked', false); 
                    }
                        if(cont==0)$('#_'+ele.className).text('');//se il contatore torna a zero svuoto la rimanenza
                });
            }
    ogni volta che scelgo una checkbox, le rimanenti per quella domanda vengono disabilitate.
    Tornano disponibili, solo quando riclicco sulla checkbox scelta in precedenza.
    codice:
    <input type="checkbox" id="a01_1" name="a01_1[]" class="b09_1" onClick="AbilitaDisabilita(1,this)" value="108"/>
    <input type="checkbox" id="a01_1" name="a01_1[]" class="b09_1" onClick="AbilitaDisabilita(1,this)" value="109"/>
    <input type="checkbox" id="a01_1" name="a01_1[]" class="b09_1" onClick="AbilitaDisabilita(1,this)" value="110"/>
    <input type="checkbox" id="a01_1" name="a01_1[]" class="b09_1" onClick="AbilitaDisabilita(1,this)" value="111"/>
    <input style="display:none" type="checkbox" id="a01_1" name="a01_1[]" class="b09_1" value="1108" checked/>
    L'ultima checkbox non è visibile, quindi non ha l'opportunità di poterla cliccare.

    In pratica se clicco una checkbox che ha valore 108,109,110,111 devo disabilitare quella che ha valore 1108.
    Il problema è che, dovrei intercettare la checkbox che ha valore 1108 e disabilitarla, come faccio?
    Grazie mille.
    Ultima modifica di ANTAGONIA; 10-06-2014 a 12:49

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    perche non puoi usare i radio?

  3. #3
    hanno voluto per forza le checkbox li vuoi ammazzare?
    tornando al mio problema come faccio a risolvere?

    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Buon giorno.
    In pratica se clicco una checkbox che ha valore 108,109,110,111 devo disabilitare quella che ha valore 1108.
    Il problema è che, dovrei intercettare la checkbox che ha valore 1108 e disabilitarla, come faccio?
    Grazie mille.
    Grazie ancora.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    1 - dici che ci sono 6 checkbox per ogni domanda ma nell'esempio io ne vedo 4(108,109,110,111)
    2 - l'unica checkbox che non è visibile è la 1108 o ce n'è una per ogni domanda?
    3 - gli id devo essere univoci, nell'esempio hai 5 checkbox con lo stesso id
    4 - vuoi usare jquery ma poi inserisci inline n volte la chiamata al metodo AbilitaDisabilita quando potresti gestire tutto con jquery usando il selettore .class
    5 - avendo id univoci puoi disabilitare la checkbox 1108 con il selettore #nomeId

  5. #5
    ho risolto cosi:
    codice:
    function AbilitaDisabilitaCheck(massimo, ele){
                var cont=0;//imposto il contatore
                $('.'+ele.className).each(function(index, element) {//ciclo solo la classe selezionata 
                    if($(this, 'input:checkbox').is(':checked')){//alla spunta di un opzione aumento il contatore
                        cont++;
                        $('#_'+ele.className).text('ti restano '+(massimo-cont));//indico quante opzioni restano da selezionare
                    }
                    
                    if(cont==massimo){//quando il contatore raggiunge il massimo disabilito i box non selezionati 
                        // $('.'+ele.className).not(':checked').attr('disabled',true);
                    }else{
                        if($(this, 'input:checkbox').val()==1108){
                            $(this, 'input:checkbox').attr('checked',false);
                            $('.'+ele.className).not(':checked').attr('disabled',true);
                        }
                        else{
                            $('.'+ele.className).not(':checked').attr('disabled',false);
                            $('#a01_1108').not(':checked').attr('checked',true);
                        }
                    }
                    if(cont==0)$('#_'+ele.className).text('');//se il contatore torna a zero svuoto la rimanenza
                });
            }
    Grazie mille.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.