В JavaScript целых чисел нет вообще. Допустимо получить информацию о том, что число имеет целочисленный вид. Но надо понимать, что оно как было представлено в памяти вещественным, так им и останется. То есть под него выделено 8 байт. Есть встроенный объект Number, у которого есть различные методы. Так как объект Number статический, то вызвать их можно явно ссылаясь на него.
Получить представление о том что объект имеет тип Number и по своему виду является целым числом можно с помощью метода Number.isInteger()
var integer = 25; // 8 байт
var real = 2.5; // 8 байт
var string = "250"; // 3 байта
var blablabla = "bla"; // 3 байта
console.log(Number.isInteger(integer)); // true
console.log(Number.isInteger(real)); // false
console.log(Number.isInteger(string)); // false
console.log(Number.isInteger(blablabla)); // false
// Также имеется возможность попытаться привести объект к числу
// Метод Number.parseFloat() пытается преобразовать объект к числу, а если у него это не получается, возвращает NaN (not a number – не число)
// Метод Number.isNaN() возвращает true, если переданный в него параметр представляет из себя NaN
var temp;
temp = Number.parseFloat(integer);
console.log(Number.isNaN(temp)); // false
temp = Number.parseFloat(real);
console.log(Number.isNaN(temp)); // false
temp = Number.parseFloat(string);
console.log(Number.isNaN(temp)); // false
temp = Number.parseFloat(blablabla);
console.log(Number.isNaN(temp)); // true
// Важно знать, что выражение (typeof NaN === 'number') возвращает true!! Такое поведение для проверки не подходит.
// Также имеется возможность попытаться привести объект к числу, которое по виду является целым
// Метод Number.parseInt() для этого способен на многое, в том числе и на "чудеса"
console.log('Всё замечательно');
var f = 25.5;
console.log(Number.parseInt(f, 10));
var sf = "25.5";
console.log(Number.parseInt(sf, 10));
var si = "15";
console.log(Number.parseInt(si, 10));
var ss = "17px";
console.log(Number.parseInt(ss, 10));
console.log('Однако для шестнадцатеричных');
var h = 0xff;
console.log(Number.parseInt(h, 16));
var sh = "FF";
console.log(Number.parseInt(sh, 16));
console.log('Как впрочем и для восьмеричных');
var o = 077;
console.log(Number.parseInt(o, 8));
var so = "077";
console.log(Number.parseInt(so, 8));
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberУчитывая все вышеперечисленные правила и поведения для нужной проверки рекомендую использовать событие onchange, которое наступает при потери фокуса элементом управления. Более сложный механизм проверки можно написать с использование события onkeydown, которое наступает посл нажатия на клавишу, но в этом случае нужен написать метод проверка для первого символа, где могут быть цифры от 0 до 9, знаки плюса и минуса, а также точка. Кроме того знаки и точка во введённой последовательности могут встретиться лишь однажды. Кроме того для клавиши Backspace также следует дать разрешение. И всё-равно это не гарантирует вам успех, так как пользователь может попытаться ввести число содержащие 400 знаков, хотя конечно можете ограничить число вводимых в элемент управления символов.