Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [JS] onChange, onLoad, disabilitare campo radio...

    Ciao.
    Ho qualche problemino con questa funzioncina, vi spiego cosa devo fare: ho un form (pcf) con 6 righe composte da due select ed un radio (cat_* , disc_*, tsconto_*).
    Fate conto di avere cat_1, cat_2 .. disc_1, disc_2 .. ecc.. (l'html è generato da php).
    Visto che "comanda" cat_* vorrei farsì che con un onChange il disc_* ed il tsconto_* relativi vengano disabilitati se cat_* == 0
    Utilizzando questo semplicissimo codice riesco a fare le cose a metà:

    codice:
    function selectDisable(i){
        if (document.pcf.cat_i .value=='0'){
                            
            document.pcf.disc_i.disabled=true;
            document.pcf.disc_i.value='0';
            document.pcf.tsconto_i.disabled=true;
            alert("In questo caso ho disabilitato i due campi incriminati.")
        
        }else{
            
            document.pcf.disc_i.disabled=false;
            document.pcf.tsconto_i.disabled=false;
            alert("In questo caso sono tutti abilitati.")
       }
        
    }
    Ho colorato "i" perchè si tratta del problema successivo.
    Immaginiamo di avere su cat_5 l'onChange .. i sarà = 5 .. cosa succede?? Se imposto cat_5 = 0 viene disabilitato disc_5 ma non tsconto_5 e poi esce l'alert.
    Come mai il campo radio non viene preso in considerazione? (Il nome è corretto)
    Parlavo della "i". Non riesco a passare questo valore nel modo corretto: mettiamo il caso richiami selectDisable(5) .. non risco a scrivere 5 al posto della "i" nelle if, ho già provato con +[i]+, [i], (i) .. ed altre cose ancora peggiori, ma niente.
    In base a come lo scrivo una volta mi dice che "document.pcf.disc_" non è previsto o non è un oggetto, una volta restituisce errore di sintassi..

    Ultimo problema: questa funzione mi serve all'onChange però al caricamento della pagina devo anche controllare se ci sono campi cat_* == 0. Ho pensato ad una funzioncina simile a quella sopra ma con un ciclo for da richiamare con onLoad.
    Peccato che usando dei template con php non ho possibilità di inserirlo nel <body> della pagina. Posso usarlo in qualche altro modo? O è meglio far eun controllo con php e aggiungere un DISABLED (se necessario) nella creazione dell'html?

    Grazie.

  2. #2
    Vi posto anche un po' di html..

    codice:
    <select name='cat_5' onchange='selectDisable(5)'>
    <option value='0'>--</option>
    <option value='LS'>LS</option>
    <option value='Q'>Q</option>
    <option value='VAR'>...ed altre...</option></select>
    <select name='disc_5'>
    <option value='0'>--</option>
    <option value='1'>1%</option>
    <option value='2'>2%</option>
    <option value='3'>3%</option>
    <option value='..'>..arrivo fino a 100</option></select>
    <input name='tsconto_5' type='radio' value='1' class='input2' checked>Si
    <input name='tsconto_5' type='radio' value='0' class='input2'>No

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao Marco1980,

    che compatibilità ti serve? Ti faccio vedere delle sintassi valide per più browser...
    codice:
    function selectDisable(i){
      cc = document.pcf.elements['cat_'+i]
      dd = document.pcf.elements['disc_'+i]
      tt = document.pcf.elements['tsconto_'+i]
      if (cc.options[cc.selectedIndex].value=='0'){                    
        dd.disabled=true;
        tt.disabled=true;
        alert("In questo caso ho disabilitato i due campi incriminati.")
      }
      else{
        dd.disabled=false;
        tt.disabled=false;
        alert("In questo caso sono tutti abilitati.")
      }  
    }
    non capito cosa vuoi fare con
    document.pcf.disc_i.value='0';

    N.B.
    hai detto che il radio è uno solo e allora ho fatto lo script sopra... in genere i radio sono 2 (o di più) con lo stesso nome... se anche tu hai due radio con lo stesso nome devi fare così
    codice:
    function selectDisable(i){
      cc = document.pcf.elements['cat_'+i]
      dd = document.pcf.elements['disc_'+i]
      tt = document.pcf.elements['tsconto_'+i]
      if (cc.options[cc.selectedIndex].value=='0'){                    
        dd.disabled=true;
        tt[0].disabled=true;
        tt[1].disabled=true;
        alert("In questo caso ho disabilitato i due campi incriminati.")
      }
      else{
        dd.disabled=false;
        tt[0].disabled=false;
        tt[1].disabled=false;
        alert("In questo caso sono tutti abilitati.")
      }  
    }

  4. #4
    ho scoperto che il radio non funziona perchè ne uso due (Si o No). Se ne uso uno solo questo viene disabilitato. E per due? :master:

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Marco1980
    Vi posto anche un po' di html..

    codice:
    <select name='cat_5' onchange='selectDisable(5)'>
    <option value='0'>--</option>
    <option value='LS'>LS</option>
    <option value='Q'>Q</option>
    <option value='VAR'>...ed altre...</option></select>
    <select name='disc_5'>
    <option value='0'>--</option>
    <option value='1'>1%</option>
    <option value='2'>2%</option>
    <option value='3'>3%</option>
    <option value='..'>..arrivo fino a 100</option></select>
    <input name='tsconto_5' type='radio' value='1' class='input2' checked>Si
    <input name='tsconto_5' type='radio' value='0' class='input2'>No
    ho visto adesso quest'altro tuo post... quindi (come immaginavo) è il secondo script quello che fa per te

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Per la questione di farlo all'onload per tutto il form senza usare il tag body
    codice:
    function ControlloOnload(){
      ff = document.pcf
      for(i=0;i<ff.elements.length;i++)
        if(ff.elements[i].name.substr(0,4)=='cat_'){
          numero = ff.elements[i].name.substr(4)
          selectDisable(numero)
        }
    }
    window.onload=ControlloOnload

  7. #7
    Originariamente inviato da willybit
    ho visto adesso quest'altro tuo post... quindi (come immaginavo) è il secondo script quello che fa per te
    infatti.. funziona alla grande!! (devo ancora capire qualcosina, ma l'importnate è che funzioni per ora) ..
    Compatibilità: il più possibile, ma credo che chi utilizzarà il soft non si sposti troppo da IE!!

    Riesci anche ad aiutarmi per il problema dell'onload?
    Grazie ancora.

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    :quote:
    me so scordato di dirti che ho fatto tutto al volo... potrebbero esserci errori...
    facce sape'

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Marco1980
    infatti.. funziona alla grande!! (devo ancora capire qualcosina, ma l'importnate è che funzioni per ora) ..
    Compatibilità: il più possibile, ma credo che chi utilizzarà il soft non si sposti troppo da IE!!

    Riesci anche ad aiutarmi per il problema dell'onload?
    Grazie ancora.
    se ti servono chiarimenti chiedi pure... la compatibilità così dovrebbe essere ok
    per l'onload avrai già visto la risposta

  10. #10
    grandioso!! Funzia tutto alla perfezione, e senza errori!
    GRAZIE!

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.