Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    Differenze fra IE e MF per la validazione di un form

    Posto pari pari il controllo del form in javascript:

    codice:
    function Controllaform()
    { 
       var min = document.frm1.min.value;
       var max = document.frm1.max.value;
       var delta=max-min;
       if (delta<0) { alert ("il valore massimo non può essere minore del minimo!"); 
                                document.frm1.min.value="1";
                                document.frm1.max.value="20";
                                document.frm1.min.focus();
                                return false;
                              }
       var difmin = document.frm1.difmin.value;
       var difmax = document.frm1.difmax.value;
       var delta2=difmax-difmin;
       if (delta2<0) { alert ("il valore massimo non può essere minore del minimo!"); 
                                document.frm1.difmin.value="0";
                                document.frm1.difmax.value="50";
                                document.frm1.difmin.focus();
                                return false;
                              }
         ggstart = document.frm1.ggstart1.value;
         mmstart = document.frm1.mmstart1.value;
         aastart = document.frm1.aastart1.value;
         ggend = document.frm1.ggend1.value;
         mmend = document.frm1.mmend1.value;
         aaend = document.frm1.aaend1.value;
         for (i = 0; i < 6; i++)
         { 
         if (frm1.scelta[i].checked) { scelta = frm1.scelta[i].value; }
         }
         if ((scelta==1) && (aaend*10000+mmend*100+ggend)<(aastart*10000+mmstart*100+ggstart)) 
            {  alert ("La data finale non può essere antecedente alla data iniziale!");
                document.frm1.ggstart1.focus();
                return false;
             }
    
         var i = 0;
         var cc = 0;
      
        for (i=0; i<=43; i++)
        {
            if (frm1[i].checked == true)
            {
               cc++;
            }
        }
        if (cc == 0) { alert ("Devi selezionare almento un evento!"); 
                            return false;
                           }
    }
    Non sto a pastare tutto il form comunque si tratta di un unico form denominato "frm1" e:
    -min max difmin difmax ggstart mmstart aastart ggend mmend aaend sono dei "select"
    -scelta è la risultante di una radio fra 6 opzioni fra cui mi interessa controllare che la data finale non sia antecedente la data iniziale solo nel caso in cui sia selezionata la scelta n.1
    -le 43 opzioni checkbox sono poste in essere in apertura di form e l'utente deve selezionarne almeno una.

    Questo controllo funziona perfettamente in Internet Explorer mentre su Mozilla Firefox i 2 controlli del minimo e del massimo funzionano ma quello relativo alla data e quello relativo al selezionamento di almeno 1 checkbox non funzionano.

    Potete aiutarmi? Grazie.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    ...
         if (frm1.scelta[i].checked) { wscelta = frm1.scelta[i].value; }
         }
         if ((parseInt(wscelta)==1) && (aaend*10000+mmend*100+ggend)<(aastart*10000+mmstart*100+ggstart)) 
            {  alert ("La data finale non può essere antecedente alla data iniziale!");
                document.frm1.ggstart1.focus();
                return false;
             }
    La sintassi che hai usato per i checkbox non l'ho mai vista... devi individuare i checkbox in base al nome ( o porzione) o, se non ve ne sono altri nel form usa questo:
    codice:
         var cc = 0;
      
        for (i=0; i<frm1.elements.length; i++)
        {
            el = frm1.elements[i];
            if (el.type=='checkbox' && el.checked) cc++;
        }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ho provato a fare le 2 modifiche suggerite da te e sono allo stesso punto di prima.

    Su IE funziona e su Firefox funzionano solo i 2 minimo-massimo

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Un paio di cose che credo non cambieranno la sostanza...

    il controllo del form l'ho messo così:

    codice:
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="frm1" onsubmit="return Controllaform();">
    e i 43 checkbox sono formati attraverso un ciclo for (in php).

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Scusa, mi era sfuggito:


    codice:
    ...
         if (document.frm1.scelta[i].checked) { wscelta = document.frm1.scelta[i].value; }
         }
         if ((parseInt(wscelta)==1) && (aaend*10000+mmend*100+ggend)<(aastart*10000+mmstart*100+ggstart)) 
            {  alert ("La data finale non può essere antecedente alla data iniziale!");
                document.frm1.ggstart1.focus();
                return false;
             }
    
    
    
         var cc = 0;
      
        for (i=0; i<document.frm1.elements.length; i++)
        {
            el = document.frm1.elements[i];
            if (el.type=='checkbox' && el.checked) cc++;
        }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ora è perfetto, 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.