Проверка, является ли переменная целым числом в JavaScript - PullRequest
5 голосов
/ 05 сентября 2010

Я сделал форму, где пользователь вводит значения ширины и высоты, которые они хотят, чтобы во всплывающем окне. Я использую window.open для этого.

Так что я думаю, что мне нужно проверить, являются ли значения ширины и высоты целочисленными. У меня есть функция, которая проверяет, что переменная является целым числом, которое ...

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

но я не знаю, как вызвать эту функцию для функции width и height, чтобы проверить, вводил ли пользователь целое число. Может ли кто-нибудь помочь?

Ответы [ 3 ]

6 голосов
/ 05 сентября 2010

Это ответ на вопрос, упомянутый в теме, а не фактический в тексте :):

Следующий метод более точен при определении, является ли строка действительным целым числом.

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

Ваш текущий метод проверяет, например, "7.5".

РЕДАКТИРОВАТЬ: Основываясь на комментарии Machineghost, я исправил функцию для правильной обработки массивов. Новая функция выглядит следующим образом:

function isInteger(possibleInteger) {
        return Object.prototype.toString.call(possibleInteger) !== "[object Array]" && /^[\d]+$/.test(possibleInteger);
}
4 голосов
/ 29 апреля 2013

Альтернативный ответ, если вы беспокоитесь о производительности.

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

Результаты теста нагрузки по сравнению с ответом Зафера в 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

Убедитесь сами: jsfiddle

1 голос
/ 05 сентября 2010
var isWidthAnInteger = isInteger(document.getElementById('width').value);
var isHeightAnInteger = isInteger(document.getElementById('height').value);
if (isWidthAnInteger && isHeightAnInteger) {
    // TODO: window.open
}

, где у вас есть следующие текстовые поля:

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