Newsgroup: it.comp.lang.javascript
Titolo: Controllo tipo input

Ciao,
devo controllare che ciò che l'utente digita in un form sia un numero, intero o reale,
ho provato con typeof == "number" ma non mi va, dove sbaglio?
Ecco il mio codice, sono poche righe:
<script type="text/javascript">
<!--
function calcola()
{
 var num;
 num = parseFloat(document.tabella.numero.value);
 if (typeof num != "number") document.tabella.log.value = "non e' un numero";
 else if (num<=0) document.tabella.log.value = "Non esiste";
 else document.tabella.log.value = Math.log(num);
 return true;
}
//-->
</script>
</head><body><center>
<form name='tabella'>
Inserite un numero intero o reale:
<input type="text" value="" name="numero" size=12>
<input type="button" value="via!" onClick="calcola()">
<br>
<table><tr><td><input type="text" value="" name="log" size=12></td></tr></table>
Nelle mie intenzioni, se l'utente inserisce qualcosa che non è un numero,
nella casellina al posto del logaritmo si dovrebbe vedere la scritta "non è un numero".
Invece niente, viene fuori NaN. Come mai?
Grazie a tutti!
Jenny

  if (isNaN(num)) document.tabella.log.value = "non e' un numero";
Grazie, cosě funziona!
Volendo, č possibile fare in modo che il controllo avvenga PRIMA,
cioč che alla pressione del button "via!" il form si blocchi
e un alert indichi all'utente che deve digitare un numero?
Il controllo andrebbe inserito qui:
<form name='tabella'>
Inserite un numero intero o reale:
<input type="text" value="" name="numero" size=12><br><br>
<input type="button" value="via!" onClick="calcola()">
come si puň scrivere?
ho provato con:
<input type="button" value="via!" onClick=" if (isNaN(num)) alert('scrivi un numero!') else calcola()">
ma non funziona...
Grazie!

 Grazie!
Spedito da 
http://www.submission.it
promuovi gratis il tuo sito web sui motori di ricerca

 funzione calcola in questo modo:
Cosě č perfetta :)
Grazie!
Jenny

, 
je...@tin.it
 
says...

Ovvio perche' "num" non e' niente:
<input type="button" value="via!" onClick=" if 
(isNaN(document.tabella.numero.value)) alert('scrivi un numero!') else 
calcola()">
-- 
Ciao, Riccardo.
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
    itALY = it

ciao Jenny
quando esegui il parseFloat e assegni il risultato ad una variablile
(num, nel tuo caso) la variabile contiene il risultato.
Ora, se num=parseFloat() nmon č un numero, essa non contiene un tipo
Stringa ma un valore NaN che javaScript ancora considera del tipo
Numero: numero Non Numero!! Oh yes!
Per cui non č colpa tua, l'intenzione era giuista.
fai cosě, anzichč typeof usa
if(isNaN(num)){...
occhio, isNaN case sensitive!
vedrai che va tutto a posto
ciao
Alberto
http://www.unitedscripters.com/
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Mah, non posta le risposte.
Dicevo, sarò più breve:
if(isNaN(num)){...}
un non numero su parseFloat() ritorna NaN che è... un tipo di dato
Numero!! Già...!
ciao
Alberto
http://www.unitedscripters.com/list.html
