Grazie mille per la risposta.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.
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]

ci riuscirei, credo, se non fosse che non conosco un comando per "SELEZIONARE" in automatico in checkbox...
Rispondi quotando