2016-06-30 16 views
0

Hallo Ich versuche, den Wert von DOM zu überprüfen:typeof Befehl funktioniert nicht

if ($('#ATTN').val() == '') {    
    $('#ATTN').val(0); 
} else { 
    iattn=$('#ATTN').val(); 
    alert(iattn); 

    if(typeof iattn == 'number'){ 
     alert('oh'); 
    } 
} 

aber es gibt nichts zurück. Auch kein Fehler angezeigt.

+0

Haben Sie geöffnet Ihr Debugger und gesehen, was 'type iattn' genau entspricht? – arjabbar

+2

Scheint so, als wäre 'typeof iattn' eine Zeichenkette, wenn Sie sie aus einem Text vom Eingabetyp erhalten. –

+1

$ ('# ATTN'). Val() - Rückgabewert, nicht Nummer. –

Antwort

1

Diese Linie

iattn=$('#ATTN').val(); 

Gibt einen String zurück.

Wenn Sie möchten, um zu sehen, ob es in eine ganze Zahl umgewandelt werden kann, dann ist es das, was Sie wollen:

iattn=parseInt($('#ATTN').val()); 
if (iattn) { 
    alert("oh"); 
} 

Verwenden parseFloat statt parseInt, wenn Sie eine allgemeine Zahl Test wollen.

Wenn Sie das Ergebnis der Analyse überprüfen, ob die Eingabe übereinstimmt, verwenden Sie so etwas wie diese:

iattn=$('#ATTN').val(); 
if (iattn == parseInt(iattn)) { 
    alert("oh"); 
} 

Eine einfachere Kontrolle, die nicht wirklich etwas in eine Zahl umwandeln, und wird alle Nummer erlaubt Formate (zB 2.3, 0x3, +23) ist dies:

if (!isNaN(iattn)) { 
    alert("oh"); 
} 

Kredit zu @pswg von einem Kommentar.

+1

aber die Wahrscheinlichkeit ist da, dass der Benutzer irrtümlich einen Textwert gibt und Parseint wird das auch in eine ganze Zahl umwandeln. das wird Chaos machen! – Bineesh

+1

Wenn der Benutzer einen Textwert angibt, der nicht in eine Ganzzahl konvertiert werden kann, wird "iattn" "NaN" und die if-Bedingung wird fehlschlagen. –

+0

Ich habe mit einer Überprüfung aktualisiert, dass der geparste Wert der Eingabe ähnlich ist, um Fälle wie "2sdfsdsdf" zu behandeln. Wenn der Benutzer jedoch beispielsweise "2.0" eingibt, schlägt die Prüfung fehl. –

0

.val() Rückkehr eine DOMString (string)

so typeof iattn wird immer ein string

, wenn Sie das wollen typeof number Sie int konvertieren

mit parseInt(iattn) oder parseFloat(iattn)

+1

Oder 'parseFloat' –

+0

@ChrisLear bearbeitet;) – HudsonPH