Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395

    javascript e firefox

    Buongiorno, ho creato una form in asp con dei controlli sui campi in javascript. Oggi mi sono accorto che questi controlli vengono convalidati da IE mentre da firefox no.
    vi posto parte del codice:

    codice:
    <script language="Javascript">
    function checkForm(frm){
    	var pattern;
    	// indirizzo (lettere, numeri, e i segni . _ -)
      pattern = /^([a-zA-Z0-9\.\,\_\-\/]\s?)+$/;
    	if(!checkPatternChars('"Indirizzo"',frm.indirizzo.value,pattern,true))
      { 
        frm.indirizzo.focus();
        return false; 
      }
    	// Città (lettere, numeri, e i segni . _ -)
      pattern = /^([a-zA-Z0-9\.\_\-]\s?)+$/;
    	if(!checkPatternChars('"Citta"',frm.citta.value,pattern,true))
      { 
        frm.citta.focus();
        return false; 
      }
      return true;
    }
    
    function checkPatternChars(nm,vlu,pattern,required){
      if ( required === undefined ) {
          required = false;
       } 
      if(!required && vlu==""){
        return true;
      }
      if (!pattern.test(vlu)){
        alert("Il campo "+nm+" non e\' valido!");
        return false;
      }
      else { 
        return true; 
      }
    }
    </script>
    mi spiegate il perchè firefox non li controlla?

    grazie

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e cosa passi a checkForm?

    o e' this
    <form onsubmit="return checkForm(this)">
    o e' document.nomeForm

    se e' solo il nome del form o, peggio, l' id del form quando il form non ha name
    e' normale funzioni solo su IE e non sugli altri browser

    ciao

    P.s. in futuro titoli molto piu' esplicativi, altrimenti la discussione viene immediatamente chiusa

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    nella form:

    onsubmit="return checkForm(this);

    grazie

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    e la console di firefox che dice?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    finalmente riesco a risponderti:

    la console mi da un'errore document.getElementById("data") is null
    In effetti il campo data nel form è nullo ma non mi visualizza l'errore (che viene visualizzato correttamente in iexplorer)
    poi mi da un avviso getElementById()

    spero sappiate rispondermi

    grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    ho scoperto il problema ma non so come risolverlo.
    l'onsubmit è scritto così:
    onsubmit="return (verificadata() && checkForm(this));"
    perchè mi fa la verifica anche della data che sia scritta in modo corretto

    ecco lo script:
    codice:
    <SCRIPT LANGUAGE="JAVASCRIPT">
    
    function numerico(stringain)
    
    // la funzione si basa sull'utilizzo del metodo parseInt
    // di cui si riporta di seguito un esempio: 
    
    // esempio : ParseInt(11) = 11
    // esempio : ParseInt(11ss) = 11
    // esempio : ParseInt(aaa) = NaN
    
    // Se il dato in input è un numero avremo lo stesso output da parseInt
    // mentre in caso di contenuto alfanumerico avremo NaN oppure la parte
    // numerica della stringa. L'esito della funzione sarà true se
    // input = output
    // per una maggiore precisione nel controllo ho preferito effettuare un
    // ciclo in modo da controllare ogni songolo carattere piuttosto che la stringa
    // intera
    
     {
     
       var stringaout;
       var carattere;
       
       for (i=0;i<stringain.length;i++)
       
        {
          carattere=stringain.charAt(i);
       
          if (parseInt(carattere)!=carattere)
            return false;
        }
        
       return true; 
      
     }
     
    
    function verificadata()
    
     {
       
       var dataverifica;
       var dataoutput;
    
       var gginput;   
       var mminput; 
       var aaaainput;
    
       var ggoutput;   
       var mmoutput; 
       var aaaaoutput;
    
    
    var datainput=document.getElementById("data").value;
    
    
    // la prima cosa che si controlla è che la data sia stata effettivamente
    // immessa e che sia di 10 caratteri
    
    
       if (datainput=="")
        {
         alert ('Immettere una data');
        return false;
      }
      else { 
        return true; 
        } 
         
    
       if (datainput.length!=10)
        {
         alert ('La data deve essere in formato GG/MM/AAAA');
        return false;
      }
      else { 
        return true; 
        } 
        
     
    // vengono ricavati il l'anno, il mese ed il giorno dalla data in input
    
       
       gginput=datainput.substr(0,2);  
       mminput=datainput.substr(3,2);
       aaaainput=datainput.substr(6,4);
       
       
    // tramite la funzione numerico viene verificato che il giorno, il mese
    // e l'anno immessi siano effettivamente in formato numerico
    
    
       if(!(numerico(gginput)))
        {
         alert ('Il giorno inserito non è in formato numerico');
         return;
        }
        
       if(!(numerico(mminput)))
        {
         alert ('Il mese inserito non è in formato numerico');
         return;
        } 
        
       if(!(numerico(aaaainput)))
        {
         alert ('L`anno inserito non è in formato numerico');
         return;
        }          
          
    
    // viene utilizzato un oggetto data per la verifica costruendola in base
    // ai parametri ricavati in input (l'anno è sottratto di 1 perchè la funzione data
    // considera i mesi partendo da zero)
    
    
       dataverifica =new Date(aaaainput,mminput-1,gginput)
    
       
    // dalla data creata viene ricavato l'anno, il mese ed il giorno (il mese è incrementato
    // di 1 per restituire il mese nel formato standard)
    
    
       aaaaoutput=dataverifica.getFullYear().toString(); 
       mmoutput=(dataverifica.getMonth()+1).toString(); 
       ggoutput=dataverifica.getDate().toString();
    
    
    // poichè le funzioni getMonth e getDate restituiscono valori numerici
    // occorre aggiungere lo zero per i mesi e gli anni unitari (es "1/1/2005")
    // il controllo è effettuato sulla lunghezza della stringa (se < 2 aggiungi lo zero)
    
    
       if (mmoutput.length<2)
         mmoutput="0"+mmoutput;
        
       if (ggoutput.length<2)
         ggoutput="0"+ggoutput;
    
    
    // La data in output è costituita dai dati ricavati precedentemente separati
    // dal carattere "/" dopo aver aggiunto 
    
    
       dataoutput=ggoutput+"/"+mmoutput+"/"+aaaaoutput;
    
    
    // viene confrontata la data in input con quella in output
    // se non coincidono vuol dire che la data non è corretta
    
    
       if (datainput!=dataoutput) {
         alert('La data inserita non è corretta');
        return false;
      }
      else { 
        return true; 
      }
    
     }
    
    </SCRIPT>

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Usare il nome "data" è sempre una scelta infelice. Ma poi esiste un campo con quell'id?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    si, il campo esiste. E' meglio se gli cambio nome?

    Grazie

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    prova

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    no, non funziona. La console di firefox mi da come avviso:
    Una stringa vuota è stata passata a getElementById().

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.