Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67

    funzione generica controllo numerico

    Salve, ho un form con dei campi da controllare se hanno un valore numerico. Vorrei utlizzare una funzione che vada bene per tutti i campi in questione e non solo per un singolo campo.
    La funzione è questa:

    function controllanumero(num)
    {
    numero = num.getElementsByTagName("input").value;
    if (isNaN(numero))
    {
    alert("Inserire un numero positivo!");
    numero="";
    num.getElementsByTagName("input").focus();
    }

    }

    La chimata alla funzione:

    <label for="kw">KW<input name="kw" id="kw" size="4" maxlength="200" type="text" onBlur="controllanumero(this);" ></label>


    Funziona ma poi il campo non si pulisce e il focus non ritorna. Dove sbaglio ?
    Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Premesso che facendo il controllo con evento onblur (cioè alla perdita del fuoco del oggetto) non tutti i browser si comporteranno alla stessa maniera passando il il fuoco all'oggetto abbandonato, che io sappia non c'è soluzione.
    codice:
    function controllanumero(num) 
    {
    numero = document.getElementById(num).value;
    if (isNaN(numero)) 
    { 
    alert("Inserire un numero positivo!");
    numero="";
    document.getElementById(num).focus();
    } 
    
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Originariamente inviato da cavicchiandrea
    Premesso che facendo il controllo con evento onblur (cioè alla perdita del fuoco del oggetto) non tutti i browser si comporteranno alla stessa maniera passando il il fuoco all'oggetto abbandonato, che io sappia non c'è soluzione.
    codice:
    function controllanumero(num) 
    {
    numero = document.getElementById(num).value;
    if (isNaN(numero)) 
    { 
    alert("Inserire un numero positivo!");
    numero="";
    document.getElementById(num).focus();
    } 
    
    }
    Non accade niente inserendo questa funzione nè usando il browser Firefox, nè IE
    Un altro suggerimento, per favore ?

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    Dichiarazione VARiabile; Valorizzazione VAR; Assegnazione;

    Originariamente inviato da creamer
    Funziona ma poi il campo non si pulisce ... Dove sbaglio ?
    Intanto, scrivendo numero=""; fai assumere valore vuoto alla variabile numero ma non significa che lo fai avere come Valore di value a quell' Elemento input type="text"

    Prova a sostituire con:

    num.getElementsByTagName("input").value = "";


    Bisognerà poi tener conto di quanti Elementi input ci sono nel FORM, poiché:

    getElementsByTagName("input")

    restituisce un Array (una Collection) di tutti gli Elementi INPUT che trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67

    Re: Dichiarazione VARiabile; Valorizzazione VAR; Assegnazione;

    Originariamente inviato da Enzaccio
    Intanto, scrivendo numero=""; fai assumere valore vuoto alla variabile numero ma non significa che lo fai avere come Valore di value a quell' Elemento input type="text"

    Prova a sostituire con:

    num.getElementsByTagName("input").value = "";


    Bisognerà poi tener conto di quanti Elementi input ci sono nel FORM, poiché:

    getElementsByTagName("input")

    restituisce un Array (una Collection) di tutti gli Elementi INPUT che trova.
    Niente da fare, il campo non viene pulito.
    Possibile che debba creare una funzione per ogni campo da controllare ?

  6. #6
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    ( sono stato un po' frettoloso e confuso, prima ... )

    Dacché alla funzione passi l' identificazione dell' Elemento col this non servono ulteriori getElements ...
    Questo funziona:
    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    
     function controllanumero(num)
     {
     numero = num.value;
       if (isNaN(numero) || num.value == "")
       {
          alert("Inserire un numero positivo!");
          num.value = "";
       }
     num.focus();
    
     }
    
    </script>
    
    </head>
    <body>
    
    <label for="kw">KW <input name="kw" id="kw" size="4" maxlength="200" type="text" onBlur="controllanumero(this);" ></label>
    
    </body>
    </html>
    con eccezione del .focus(); anche se posizionato a fine funzione; probabilmente va in conflitto col ONBLUR, risponde invece ad un ONCLICK.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Originariamente inviato da Enzaccio
    ( sono stato un po' frettoloso e confuso, prima ... )

    Dacché alla funzione passi l' identificazione dell' Elemento col this non servono ulteriori getElements ...
    Questo funziona:
    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    
     function controllanumero(num)
     {
     numero = num.value;
       if (isNaN(numero) || num.value == "")
       {
          alert("Inserire un numero positivo!");
          num.value = "";
       }
     num.focus();
    
     }
    
    </script>
    
    </head>
    <body>
    
    <label for="kw">KW <input name="kw" id="kw" size="4" maxlength="200" type="text" onBlur="controllanumero(this);" ></label>
    
    </body>
    </html>
    con eccezione del .focus(); anche se posizionato a fine funzione; probabilmente va in conflitto col ONBLUR, risponde invece ad un ONCLICK.

    Il problema è Firefox, l'evento Onblur non lo gestisce come dovrebbe, dato che con IE funziona tutto correttamente, grazie a tutti coloro che si sono interessati.

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.