Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187

    Problema controlla checkbox

    Ciao a tutti,
    ho questo script per il controllo dei checkbox, se è spunto uno non deve essere spuntato l'altro:

    codice:
    function ControllaCheck() {
       if (document.getElementById('mod_flgimmagine').checked = true){
       document.getElementById('mod_flgimmagine').checked = true;
       document.getElementById('del_flgimmagine').checked = false;
       }
       if (document.getElementById('del_flgimmagine').checked = true){
       document.getElementById('mod_flgimmagine').checked = false;
       document.getElementById('del_flgimmagine').checked = true;
       }
    }
    nei campi la richiamo così:

    codice:
    <input name="mod_flgimmagine" type="checkbox" id="mod_flgimmagine" onChange="ControllaCheck()" />
    <input name="del_flgimmagine" type="checkbox" id="del_flgimmagine" onChange="ControllaCheck()" /></td>
    ora il problema è che non funziona bene, se spunto il checkbox del_flgimmagine questo mi va su attivo, ma si attiva anche l'altro, inoltre il checkbox mod_flgimmagine vale sempre "0" ossia come se fosse sempre non spuntato.

    Dove è lo sbaglio secondo voi? Forse nelle proprietà con cui richiamo i checkbox? :master:

  2. #2
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Dimenticavo... se assegno la proprietà value ai checkbox e richiamo quella nella funzione anzichè la proprietà checked tutto funziona.
    Purtroppo però io il campo value lo devo utilizzare per un'altra cosa...
    HO letto un pò di post ma fanno tutti riferimento ad argomenti diversi oppure che utilizzano il campo value... è possibile farlo funzionare senza toccare la proprietà value?

    :master:

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Prima di commentare il tuo script (che contiene un errore di logica),
    PERCHE` non usi due (o tre) bottoni radio, invece?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Allora non posso usare dei radiobutton perchè 1) l'attributo name uguale (devono essere diversi in quanto poi li devo recuperare con delle variabili di sessione e devono quindi avere valori diversi) 2) non posso assegnare un valore value (sempre perchè mi servono "puliti")

    Cerco sempre di leggere i post con le risposte (uhmm magari alle volte me ne sfugge qualcuno ) l'unico che ho trovato quasi compatibile è questo:

    codice:
    <script language="JavaScript">
    
    function Attiva(n, nomecheckboxses, f) {
     var c=f.elements[nomecheckboxses];
     for (i=0; i<c.length; i++) c[i].checked=(i==n);
    }
    
    </script>
    purtroppo vuole che l'attributo name sia uguale per tutti i checkbox...
    si forse ho scoperto l'errore di logica di cui parli forse è questo?

    codice:
    function ControllaCheck() {
       if (document.getElementById('mod_flgimmagine').checked =  true){
       document.getElementById('mod_flgimmagine').checked = true;
       document.getElementById('del_flgimmagine').checked = false;
       }
       if (document.getElementById('del_flgimmagine').checked = true){
       document.getElementById('mod_flgimmagine').checked = false;
       document.getElementById('del_flgimmagine').checked = true;
       }
    }
    invece deve essere == giusto? Però non funziona ugualmente (sempre che sia questo l'errore)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Quello e` l'errore di sintassi (che non avevo notato).

    Per fare quello che vuoi, devi passare al JS il campo su cui stai operando:
    codice:
    <input name="mod_flgimmagine" type="checkbox" id="mod_flgimmagine" onChange="ControllaCheck(this)" />
    <input name="del_flgimmagine" type="checkbox" id="del_flgimmagine" onChange="ControllaCheck(this)" /></td>
    Poi il JS deve modificare solo l'altro campo, se (solo se) il primo e` settato:
    codice:
    function ControllaCheck(ogg) {
      if(!ogg.checked) return; // se campo non settato, fa nulla
      switch(ogg.name) {
        case 'mod_flgimmagine':
          document.getElementById('del_flgimmagine').checked = false;
          break;
        case 'del_flgimmagine':
          document.getElementById('mod_flgimmagine').checked = false;
          break;
      }
    }

    In alternativa, puoi fare tutto nel codice HTML:
    codice:
    <input name="mod_flgimmagine" type="checkbox" id="mod_flgimmagine" onChange="if(this.checked)this.form.del_flgimmagine.checked=false;" />
    <input name="del_flgimmagine" type="checkbox" id="del_flgimmagine" onChange="if(this.checked)this.form.mod_flgimmagine.checked=false;" /></td>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    No non funziona neanche il tuo esempio (ho provato il secondo quello nell'HTML)
    mi rimangono sempre spuntati entrambi... forse perchè la proprietà checked non può essere convertita in false (non c'è una proprietà tipo unchecked?)?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da nadia79
    forse perchè la proprietà checked non può essere convertita in false (non c'è una proprietà tipo unchecked?)?
    In qualche browser funziona, ma forse non in tutti.

    Prova cosi`:
    codice:
    <input name="mod_flgimmagine" type="checkbox" id="mod_flgimmagine" onChange="if(this.checked&&this.form.del_flgimmagine.checked) this.form.del_flgimmagine.click();" />
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.