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

    controlli campi non numerici

    Mi sto scoppiando la testa per il controllo dei campi perchè nel campo "matricola" è solo numerico e funziona perfettamente, poi nei campi "nome" e "cognome" sono non numerici, quando digito i numeri nel campo "nome" e funziona perfettamente, e invece nel campo "cognome" non funziona, proseguendo lo stesso senza accorgere che nel campo "cognome" è stato inserito i numeri.... Come faccio?


    codice:
    function Controlla() { 
      // Variabili associate ai campi del modulo 
      var matricola = document.form1.matr.value; 
      var cognome = document.form1.cognome.value; 
      var nome = document.form1.nome.value;
      var alfabeto = document.form1.nome.value; document.form1.cognome.value;
    var lgt=alfabeto.length;
    var pos=lgt-1;
    var lastchr=alfabeto.charAt(pos);
      //Effettua il controllo sul campo NOME 
      if ((nome == "") || (nome == "undefined")) { 
        alert("Il campo Nome è obbligatorio."); 
        document.form1.nome.focus(); 
        return false; 
      } 
      //Effettua il controllo sul campo COGNOME 
      else if ((cognome == "") || (cognome == "undefined")) { 
        alert("Il campo Cognome è obbligatorio."); 
        document.form1.cognome.focus(); 
        return false; 
      } 
    
      //Effettua il controllo sul campo MATRICOLA 
     if ((isNaN(matricola)) || (matricola == "") || (matricola == "undefined")) { 
    			window.alert("Il campo Matricola deve essere numerico ed anche obbligatorio."); 
    			document.form1.matr.value = ""; 
    			document.form1.matr.focus(); 
    			return false; 
    			} else {
    	if ((lastchr=="0")||(lastchr=="1")||(lastchr=="2")||(lastchr=="3")||(lastchr=="4")||(lastchr=="5")||(lastchr=="6")||(lastchr=="7")||(lastchr=="8")||(lastchr=="9"))
    {
    window.alert("Non si possono inserire valori numerici");   
    //var ntext=alfabeto.slice(0,pos);
    document.form1.cognome.value = ""; 
    document.form1.nome.value = ""; 
    //alfabeto.value=ntext;
    //next.value = "";
    return false;
    }
    }
      //INVIA IL MODULO 
      if(confirm('Sicuro di assegnare?'))document.form1.submit(); 
    }
    poi secondo me riguarda su questa linea:
    codice:
    [b]var alfabeto = document.form1.nome.value || document.form1.cognnome.value; [b/]
    non funziona
    codice:
    [b]var alfabeto = document.form1.nome.value && document.form1.cognnome.value; [b/]
    fa il contrario che controlla al cognome invece al nome non controlla per niente...

    Grazie
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    a me sembra solo una grande confusione.

    in altre parole tu hai tre campi: una matricola che deve essere un numero (di quante cifre?) un nome ed un cognome.
    Basta molto meno del codice che hai scritto

    codice:
    function Controlla() { 
      // Variabili associate ai campi del modulo 
      var matricola = document.form1.matr.value; 
      var cognome = document.form1.cognome.value; 
      var nome = document.form1.nome.value;
    
    
      if (!(nome.match(/[A-Za-z]+/))) {
         alert("il nome non è corretto");
         document.form1.nome.focus();
         return;
      }
    
    
      if (!(cognome.match(/[A-Za-z]+/))) {
         // ... codice analogo al precedente
         return;
      }
    
      if (isNaN(matricola)) {
         // ... codice analogo al precedente
         return;
      }
    
      document.form1.submit();
    
    }
    se la matricola ha un formato prefissato si può fare un controllo più preciso

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Va alla grande! infatti è così più semplice. Ma per il confirm

    codice:
          if (check) confirm('Sicuro di assegnare?')document.form1.submit();
    Perchè appare l'errore di jscript? Non ce l'altro per fare la conferma?
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    mettilo cosi:

    codice:
    function Controlla() { 
      // Variabili associate ai campi del modulo 
      var matricola = document.form1.matr.value; 
      var cognome = document.form1.cognome.value; 
      var nome = document.form1.nome.value;
    
    
      if (!(nome.match(/[A-Za-z]+/))) {
         alert("il nome non è corretto");
         document.form1.nome.focus();
         return;
      }
    
    
      if (!(cognome.match(/[A-Za-z]+/))) {
         // ... codice analogo al precedente
         return;
      }
    
      if (isNaN(matricola)) {
         // ... codice analogo al precedente
         return;
      }
    
      if (confirm("sicuro di assegnare?")) {
         document.form1.submit();
      }
    }
    cmq come ti ho detto prima, se sai quante cifre ha il numero di matricola si puà fare un controllo migliore.

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    perfetto, grazie tantissimo!!!
    allora per matricola è solo 4 cifre...... in che senso che faccia il controllo migliore?
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    la funzione isNaN controlla in modo generico che il dato sia un numero ma anche 0 sarebbe un numero valido.

    Cambia la riga

    codice:
     if (isNaN(matricola)) {
    con quest'altra

    codice:
     if (!(matricola.match(/[1-9]{1}\d{3}/))) {
    in quasto modo sono accettati solo numeri di 4 cifre
    (da 1000 a 9999)

    enjoy
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Ah ecco, ma il problema è che esistono anche 2 cifre, basta che non sia "0", penso che basterebbe da 10 fino al 9999.....
    Grazie
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  8. #8
    ho trovato, basta

    if (!(matricola.match(/[1-9]{1}\d{1}/))) {

    così potrei permettere da 10 fino 9999


    Thank you mucj!!!
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    no, quell'espressione prende i numeri da 10 a 99

    per prendere i numeri che vanno da 10 a 9999
    devi scrivere invece

    codice:
    if (!(matricola.match(/[1-9]{1}\d{1,3}/))) {
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Bello script... peccato che se inserisci nel campo nome sia lettere che numeri, la funzione non vede l'errore. E' normale? o sbaglio qualcosina io?

    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.