Los datos del formulario es siempre el texto. Mi sugerencia es que analizarlo como entero y compararlo con el original:
var sampleData = ["not a number", "0", "10", "3.14", "-12", "-0.34", "2e10", "34foo", "foo34"];
var integers = [], notIntegers = [];
for(var i=0, len=sampleData.length; i<len; i++){
var original = sampleData[i];
var parsed = parseInt(original, 10);
if(!isNaN(parsed) && original==parsed){
integers.push(parsed);
}else{
notIntegers.push(original);
}
}
alert("Integers: " + integers.join(", ") + "\nNot integers: " + notIntegers.join(", "));
Esto demuestra:
Integers: 0, 10, -12
Not integers: not a number, 3.14, -0.34, 2e10, 34foo, foo34
La notación científica no es compatible, ni los separadores de miles. Si es un problema, necesita algo diferente;)
Actualización: Quiero dejar en claro que este es solo uno de los enfoques posibles, no la única Verdad. Este enfoque tiene sentido si necesita hacer cálculos matemáticos con los datos, de modo que debe obtener una variable numérica de todos modos.
Solo indicando que [* Number.isInteger *] (http: // ecma-interna tional.org/ecma-262/6.0/index.html#sec-isinteger) se agregó en ECMA-262 ed 6 también conocido como ECMAScript 2015. – RobG