Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    FORM - disabilitare le altre checkbox dopo un numero massimo di scelte effettuate

    Come da oggetto, vorriei sapere come e' possibile realizzare un form in cui vi sia una domanda con una serie di checkbox di risposta in cui sia possibile selezionarne un numero massimo X e che al raggiungimento di questo numero si disattivino le altre chechbox... che evidentemente si riattivano quando si deseleziona una chechbox.

    Grazie a tutti
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Richiama con un setInterval una funzione che verifica il numero di checkbox selezionati, se il numero è uguale al massimo consentito, disabilita i checkbox non selezionati aggiungendoci l'attributo disabled, altrimenti abilitali tutti rimuovendolo.

  3. #3
    Javascript non e' il mio forte, sto povando a modificare una funzione che ho trovato

    codice:
    <script type="text/javascript">
    
    function AbilitaDisabilita(massimo){
    	var count=0; // questa variabile quando e' = al parametro passato alla funzione disabilita i checkbox
    	var box = document.getElementsByTagName("input") // box e' l'array di tutti gli input
    	for(var i=0; i<box.length; i++){ // scorro l'array box
    		if(box[i].type=="checkbox" && box[i].checked){ // se è una checkbox ed è selezionata allora incremento count
    			count++;
    		}
    		if(count!=massimo){
    			// DISABILITO LE CASELLE 
    		}else{
    			// ABILITO LE CASELLE
    		}
    	}
    }
    onload=function(){
    	AbilitaDisabilita(massimo);
    }
    
    </script>
    nel form poi ad ogni checkbox richiamo la funzione con onclick="AbilitaDisabilita(2)"

    Sebbene non sia proprio quello che volevo perchè il form praticamente è un questionario, con delle domande ciascuna che prevede un numero diverso di risposte, la prima domanda deve avere 2 risposte, la seconda 1, non so se sia questa la strada.
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Quella non può funzionare perchè agisce su tutti gli input, tu invece hai bisogno di agire sugli input corrispondenti ad una domanda ed in modo differente.

    Per prima cosa dovresti fare in modo che gli input della stessa domanda abbiano qualcosa in comune, idealmente l'attributo name, per esempio:

    codice:
    Che linguaggi conosci?
    <input name="Q1[0]" > PHP 
    <input name="Q1[1]" > HTML
    <input name="Q1[2]" > JAVASCRIPT
    
    Che S.O. usi?
    <input name="Q2[0]" > Windows
    <input name="Q2[1]" > Linux
    <input name="Q2[2]" > Mac

  5. #5
    Si certo allora, la "cosa" è diventata:
    codice:
    <script type="text/javascript">
    
    function AbilitaDisabilita(massimo, indicatore){
    	var count=0;
    	var box = document.getElementsByTagName("input")
    	for(var i=0; i<box.length; i++){
    		if(box[i].type=="checkbox" && box[i].checked){
    			count++;
    		}
    		if(count!=massimo){
    			document.getElementById(indicatore).setAttribute("disabled","disabled");
    		}else{
    			document.getElementById(indicatore).removeAttribute("disabled");
    		}
    	}
    }
    onload=function(){
    	AbilitaDisabilita(massimo, indicatore);
    }
    
    </script>
    dove massimo è il numero massimo di check che si possono dare per ciascuna domanda e che viene determinato dinamicamente con PHP e indicatore è l'id della checkbox, anch' esso determinato dinamicamente.

    ogni checkbox è del tipo:

    <input type="checkbox" name="<?php echo $riga['ID']."_".$i; ?>" value="<?php echo $riga['ID']."_".$i; ?>" id = "<?php echo $riga['ID']."_".$i; ?>" onclick="AbilitaDisabilita("<?php echo $massimo; ?>","<?php echo $riga['ID']."_".$i; ?>")"/>

    in pratica un esempio potrebbe essere

    <input type="checkbox" name="1_3" value="1_3" id = "1_3" onclick="AbilitaDisabilita("2","1_3")"/>

    Ma non funziona...
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Jquery ti semplificherebbe notevolmente la vita, ti consiglio intanto di scaricarlo e leggere la documentazione

  7. #7
    Credi quindi che con una funzione del genere non riuscirei ad ottenere quello che voglio?
    E' la strada sbagliata?
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  8. #8
    Ci sono molte cose che non vanno: innanzitutto non si capisce cosa si deve disabilitare... se io passo come parametro "indicatore" alla funzione che corrisponde all' id della casella che viene selezionata solo questo dovrebbe essere disabilitato...

    A parte che non succede, come potrei, essendo noto l'id della checkbox ed essendo del tipo gruppo_casella (ovvero 1_1, 1_2, 1_3, 2_1, ecc.) disabilitare tutte le check box che iniziano per gruppo quando ho selezionato un certo numero di caselle?

    in definitiva, se voglio che l' utente selezioni 3 interessi, non di più da una lista, come posso disabilitare le checkbox al raggiungimeto delle 3 spunte?

    Secondo me la funzione che ho postato se modificata può portare qualcosa di buono, senza usare jquery
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Dopo diversi tentativi in js senza soluzione (sarà perché ormai ragiono solo jqueriese ) sono passato a jquery ed ecco la soluzione
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Funziona perfettamente, grazie mille
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

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.