Originariamente inviato da simo_JQ
ci riuscirei, credo, se non fosse che non conosco un comando per "SELEZIONARE" in automatico in checkbox...

Ho guardato nelle API di Jquery e non trovo nulla. Se sai come si fa a fare questo, ti posso fare una funzione che fa al caso tuo.
Grazie mille per la risposta.
Proprio ora sono riuscito a risolvere il problema. Probabilmente ci sarà qualcosa di più semplice, ma mi accontento di questo.

codice:
function search_child(parent_id,azione){
	
	for(var i=0; i<document.form_lista.elements.length; i++){

		elem_chk 	= document.form_lista.elements[i];
		val_sel 	= elem_chk.getAttribute('parentid');		
		id_elem 	= elem_chk.getAttribute('id');
		
		// se elemento è figlio del valore passato
		if (val_sel==parent_id){
			document.getElementById(id_elem).checked = azione;
			search_child(id_elem,azione);
		}
	}
}

// funzione che mi permette di cercare se ci sono nodi figli attivi per il nodo passato
function search_child_active(parent_id){	
	for(var i=0; i<document.form_lista.elements.length; i++){
		elem_chk 	= document.form_lista.elements[i];
		val_sel 	= elem_chk.getAttribute('parentid');
		id_elem 	= elem_chk.getAttribute('id');						
		// se elemento è figlio del valore passato
		if (val_sel==parent_id){
			if(document.getElementById(id_elem).checked == true){
				return true;
			}			
		}
	}
	return false;
}


function search_parent(val,check){
	// prendo il nodo padre del nodo chiamante
	parent_id	= document.getElementById(val).getAttribute('parentid');
	if (check==true){
		// se sto abilitando il nodo allora abilito anche il padre	
		document.getElementById(val).checked = check;		
		if (parent_id>0){
			search_parent(parent_id,check);	
		}
	}else{
		// se sto disabilitando il nodo allora 
		// cerco i figli per questo nodo e se non li trova
		// lo disabilito.
				
		if (parent_id>0){
			active_ch = search_child_active(parent_id);
			if (active_ch==false){
				document.getElementById(parent_id).checked = false;
			}
			// cerco ricorsivamente il padre del nodo
			search_parent(parent_id,check);	
		}	
	}
}


function sel_ckeck(val){
	// se il nodo che chiama ha figli allora applico la stessa azione
	valore_id 	= val.id
	chk_sel 	= val.checked;
	search_child(valore_id,chk_sel);

	// se il nodo che chiama ha un nodo padre
	parent_id	= val.getAttribute('parentid');
	if (parent_id>0){
		
		if (chk_sel==true){
			// se sto mettendo il check al nodo chiamante abilito anche il padre e faccio la ricorsione
			// per abilitare tutti i parent del nodo.
			search_parent(parent_id,chk_sel);
				
		}else{
			// se è false verifico se il padre ha altri figli abilitati
			child_active = search_child_active(parent_id);				

			// se non ne ha disabilito il padre
			if(child_active==false){
				document.getElementById(parent_id).checked = false;
				// cerco ricorsivamente gli altri parent e applico lo stesso controllo 
				search_parent(parent_id,chk_sel);
			}
			// se li ha allora non faccio nulla	

		}
	}
}

<ul>
	[*] 
		<input parentid="null" type="checkbox" value="1" name="accessi[]" id="1" onclick='sel_ckeck(this);'>VALORE 1
		<ul>
			[*]
				<input parentid="1" type="checkbox" value="2" name="accessi[]" id="2" onclick='sel_ckeck(this);'>VALORE 1.1
			
			[*] 
				<input parentid="1" type="checkbox" value="3" name="accessi[]" id="3" onclick='sel_ckeck(this);'>VALORE 1.2
			
			[*]
				<input parentid="1" type="checkbox" value="4" name="accessi[]" id="4" onclick='sel_ckeck(this);'>VALORE 1.3
				<ul>
					[*] 
						<input parentid="4" type="checkbox" value="5" name="accessi[]" id="5" onclick='sel_ckeck(this);'>VALORE 1.3.1
					
				[/list]
			
		[/list]
	
	[*]
		<input type="checkbox" parentid="null" value="6" name="accessi[]" id="6">VALORE 2
	[/list]