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

    Delezionare tutti i checkbox tranne uno

    Salve a tutti

    Vengo subito al punto: mi trovo una tabella in cui mostro un record per riga, per ciascun record ho una checkbox chiamata item[n][chk], dove n è un numero progressivo che aumenta di 1 per ogni record.

    Questa tabella mi permette di inviare ad uno script PHP una lista di record da modificare / cancellare / ecc. Ora però vorrei inserire dei link, riga per riga, per modificare o cancellare i singoli record. Attualmente ho uno script dedicato, ma vorrei unificarlo con l'altro (in realtà fanno la stessa cosa).

    Vorrei quindi che, al click sul link / pulsante / immagine:

    1. Tutte le checkbox vengano deselezionate
    2. La checkbox della riga di cui è stato premuto il link venga selezionata
    3. Il form venga inviato (submit)

    Il codice per ora è questo:

    codice:
    <form name="series_0" method="post" action="script.php">
    <input type="checkbox" name="item[1][chk]" checked />
    Modifica
    Ma solo il punto 1, ovvero la deselezione, funziona. Potete darmi una mano a completarlo?

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, per quello che dovresti fare non ti converrebbe usare dei radio? visto che devi passare solo l'unico selezionato.

    Posta il codice javascript magari cosi si puo' vedere cosa fa.

  3. #3
    Ciao m4rko80, grazie della risposta.

    Non posso usare dei radio perchè la stessa tabella deve consentirmi di "mandare" a modificare n record in un colpo solo. Dallo screenshot dovrebbe essere più evidente.

    Il codice Javascript della funzione uncheckAll() è questo:

    codice:
    function uncheckAll(form) {
    	var myForm = document.forms[form];
    	for (var i=0; i < myForm.length; i++) {
    		myForm.elements[i].checked = false;
    	}
    }
    Questa parte, la deselezione di tutti i record, funziona benissimo. È il resto che non funziona.

    Tra l'altro, mi ero dimenticato un punto tra il 2 e il 3: prima di inviare il modulo vorrei modificare l'action, dato che a seconda del link premuto i dati devono andare ad uno script o ad un altro.
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Io solitamente per gestire piu' facilemente il tipo di cosa da js faccio cosi':

    Supponiamop che siamo nel ciclo che genera le chek e i link della riga

    id della check c_L1 (chek link 1 dove il numero e' quello del ciclo)
    id del link L1 (id del link o tag dove clicco, 1 e' lo stesso di prima)

    Sul click del link, ricavo l'id L1

    Deseleziono tutto e la check da usare sara var idSelected = 'c_'+idPassato.

    Se e' questo che ti mancava come possibile suggerimento per andare a recuperare facilmente l'id nella stessa riga.

    Poi gestici il link e per l'action fai una modifica come per ogni attributo.

    document.getElementById('idtag').action = '.....';

  5. #5
    Non avevo pensato agli ID!!! Stavo usando il name della checkbox... Che peraltro doveva rimanere con le parentesi quadre (motivi PHP).

    Ora ho risolto perfettamente eliminando le parentesi dal ID delle checkbox e modificando il link in questo modo:

    codice:
    javascript:
    uncheckAll('series_0');
    document.series_0.item_3_chkbx.checked=true;
    document.series_0.action='script.php';
    document.series_0.submit();
    return false;
    Ora, per aggiungere funzioni, mi basta modificare di volta in volta la action.

    Grazie dell'aiuto!

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Di nulla ciao

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 © 2026 vBulletin Solutions, Inc. All rights reserved.