Проверка, является ли переменная целым числом в JavaScript

javascript parseint

7744 просмотра

3 ответа

81 Репутация автора

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

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

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

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

Автор: Sam Источник Размещён: 05.09.2010 09:01

Ответы (3)


1 плюс

884668 Репутация автора

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" />
Автор: Darin Dimitrov Размещён: 05.09.2010 09:06

6 плюса

1996 Репутация автора

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

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

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

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

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

function isInteger(possibleInteger) {
        return Object.prototype.toString.call(possibleInteger) !== "[object Array]" && /^[\d]+$/.test(possibleInteger);
}
Автор: Zafer Размещён: 05.09.2010 10:50

4 плюса

9156 Репутация автора

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

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

Автор: zupa Размещён: 29.04.2013 05:05
Вопросы из категории :
32x32