2010-09-05 7 views
5

Ich machte ein Formular, wo der Benutzer Werte für Breite und Höhe, die sie für das Pop-up-Fenster sein möchten, eingegeben werden. Ich verwende window.open dafür.Überprüfen, ob eine Variable eine Ganzzahl in Javascript ist

Also ich denke, ich muss überprüfen, ob die Werte für Breite und Höhe ganzzahlig sind. Ich habe eine Funktion, die prüft, ob eine Variable eine ganze Zahl ist, die ist ...

function isInteger(possibleInteger) { 
    return !isNaN(parseInt(possibleInteger)); 
} 

aber ich weiß nicht, wie diese Funktion Funktion der Breite und Höhe rufen zu überprüfen, ob der Benutzer eine ganze Zahl eingegeben. Kann jemand helfen?

Antwort

1
var isWidthAnInteger = isInteger(document.getElementById('width').value); 
var isHeightAnInteger = isInteger(document.getElementById('height').value); 
if (isWidthAnInteger && isHeightAnInteger) { 
    // TODO: window.open 
} 

dem Sie die folgenden Textfelder haben:

Width: <input type="text" id="width" name="width" /> 
Height: <input type="text" id="height" name="height" /> 
+0

ok cool danke! Weißt du, ob ich tun könnte, was du getan hast, aber wenn und sonst Anweisungen, weil ich auch überprüfen möchte, ob es ein int ist, und wenn es nicht ist, möchte ich eine Fehlermeldung zurück an den Benutzer senden. Vielen Dank für Ihre Hilfe Entschuldigung Neu bei Javascript. – Sam

+0

oh i Überprüfung mich, ob Breite und Höhe int in Funktion ist und meine window.open ist eine weitere Funktion namens Laden der Seite wird dieser Effekt if (isWidthAnInteger && isHeightAnInteger) { // TODO: window.open } ??? – Sam

+1

fügen Sie einfach sonst Bedingung wie diese nach dem if 'else {alert (" Bitte geben Sie ganzzahlige Werte für Breite und Höhe ")}' –

6

Dies ist eine Antwort auf die erste Frage in dem Thema erwähnt, nicht die eigentliche eine im Körper des Textes :).

Die folgende Methode ist genauer beim Bestimmen, ob die Zeichenfolge eine echte ganze Zahl ist.

Ihre aktuelle Methode validiert zum Beispiel "7.5".

EDIT: Basierend auf Kommentar von Machinghost, reparierte ich die Funktion, um Arrays korrekt zu behandeln. Die neue Funktion lautet wie folgt:

function isInteger(possibleInteger) { 
     return Object.prototype.toString.call(possibleInteger) !== "[object Array]" && /^[\d]+$/.test(possibleInteger); 
} 
+0

'/^ [\ d] + $ /.test ([1]) 'gibt wahr zurück, und' [1] 'ist definitiv ein Array, keine Ganzzahl – machineghost

+1

Ja, Du hast recht. Ich habe meine Antwort bearbeitet. Vielen Dank. – Zafer

4

Eine alternative Antwort, wenn Sie sich um die Leistung sorgen.

var isInteger1 = function(a) { 
    return ((typeof a !== 'number') || (a % 1 !== 0)) ? false : true; 
}; 

Lasttestergebnisse im Vergleich zu Zafer Antwort in Chrome:

undefined => 4ms vs 151ms 
1 => 10ms vs 390ms 
1.1 => 61ms vs 250ms 
'1' => 8ms vs 334ms 
[1] => 9ms vs 210ms 
{foo: 'bar'} => 8ms vs 478ms 

überzeugen Sie sich selbst: jsfiddle