2010-09-05 40 views
5

Hice un formulario en el que el usuario ingresa los valores de ancho y alto que desea para la ventana emergente. Estoy usando window.open para eso.Comprobando si una variable es un número entero en javascript

Así que creo que necesito comprobar si los valores de ancho y alto son enteros. Tengo una función que comprueba que una variable es un número entero que es ...

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

pero no sé cómo llamar a esta función a la función de anchura y altura para comprobar si el usuario introduce un número entero. ¿Alguien puede ayudar?

Respuesta

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

donde tiene los siguientes cuadros de texto:

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

ok gracias fresco! ¿Sabes si podría hacer lo que hiciste pero si hago declaraciones if y else porque también quiero comprobar si es una int y si no es así quiero enviar un mensaje de error al usuario. Gracias por tu ayuda lo siento nuevo en javascript. – Sam

+0

oh yo estoy comprobando si el ancho y la altura es de tipo int en una función y mi window.open es otra función llamada carga de la página será este efecto si (isWidthAnInteger && isHeightAnInteger) {// TODO : window.open } ??? – Sam

+1

simplemente agregue otra condición como esta después del if 'else {alert (" Ingrese valores enteros para ancho y alto ")}' –

6

Esta es una respuesta a la pregunta mencionada en el tema, no el real en el cuerpo del texto :).

El siguiente método es más preciso para determinar si la cadena es un número entero real.

function isInteger(possibleInteger) { 
    return /^[\d]+$/.test(possibleInteger)​; 
} 

Su método actual valida "7.5" por ejemplo.

EDITAR: Basado en el comentario de machineghost, arreglé la función para manejar arreglos correctamente. La nueva función es la siguiente:

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

'/^ [\ d] + $ /. test ([1]) 'devuelve true, y' [1] 'es definitivamente una matriz, no un número entero – machineghost

+1

Sí, tienes razón. Edité mi respuesta. Gracias. – Zafer

4

Una respuesta alternativa si le preocupa el rendimiento.

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

resultados de las pruebas de carga en comparación con la respuesta de Zafer en 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 

Vea usted mismo: jsfiddle

Cuestiones relacionadas