2012-04-17 19 views
5

Per farla breve, stavo cercando di convalidare un campo telefonico. ive ha aggiunto il isNaN e parseInt per il controllo della " " in campo ma che ha dettoparseInt restituisce sempre NaN?

Questo seguito non convalida per true..what che mi manca?

fallisce sempre ... non si legge mai vero anche quando inserisco un numero nel campo e invio. ottengo sempre l'errore mssg.

EDIT: sto testando valori di ingresso da un modulo, phone è il nome del campo.

+0

Opere per me, ad es. con telefono = "5". Quali sono i valori di input test? – Bergi

+0

sì, mi dispiace, sto testando input vals da un modulo – somdow

+0

Dovresti includere il tuo html anche qui nella domanda. Questo potrebbe aiutarci a eseguirne il debug. – webnesto

risposta

7

parseInt è un po 'strano, a volte:

> parseInt("123-456-789") 
123 

Fortunatamente probabilmente si può risolvere il caso con:

> Number("123-456-789") 
NaN 
10

vari modi per coerse stringhe JS ai numeri, e le loro conseguenze:

Results of converting various strings using the above techniques http://phrogz.net/JS/string_to_number.png

Io personalmente uso *1 in quanto è breve per scrivere, ma ancora si distingue out (a differenza del unario +), e mi dà ciò che l'utente ha digitato o fallisce completamente. Io uso solo parseInt() quando I sa che ci sarà un contenuto non numerico alla fine da ignorare, o quando devo analizzare una stringa non di base 10.

Edit: In base al commento, se si utilizza phone.val() fisso allora

  1. Si stava utilizzando jQuery (che non hai mai parlato, e dovrebbe avere), e
  2. Si effettivamente avuto/avere un Oggetto jQuery, che include uno o più elementi DOM (probabilmente solo uno).

Ogni volta che si esegue var foo = $('…');, la variabile foo fa riferimento a un oggetto jQuery di uno o più elementi. È possibile ottenere il primo elemento DOM effettivo da questo tramite var fooEl = foo[0]; o var fooEl = foo.get(0); ... ma anche in tal caso si ancora hanno un elemento DOM e non una proprietà particolare di quello.

Per gli input modulo, è necessario ottenere .value dall'elemento DOM, che è ciò che fa il metodo jQuery .val().

Problemi correlati