2010-09-05 3 views
5

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

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

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

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

ответ

1
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" /> 
+0

ОК прохладный спасибо! Знаете ли вы, могу ли я сделать то, что вы делали, но делать с операторами if и else, потому что я также хочу проверить, является ли это int, и если я не хочу отправить сообщение об ошибке пользователю. Спасибо за ур помочь извините за новый javascript. – Sam

+0

ой я проверка, если ширина и высота ИНТ в функции и мой window.open другая функция называется загрузки страницы будет этот эффект если (isWidthAnInteger && isHeightAnInteger) {// TODO : window.open } ??? – Sam

+1

просто добавьте еще условие вроде этого после if 'else {alert (" Введите целочисленные значения для ширины и высоты ")}' –

6

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

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

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

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

EDIT: Исходя из комментария машины, я исправил функцию для правильной обработки массивов. Новая функция такова:

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

'/^ [\ d] + $ /. test ([1]) 'возвращает true, а' [1] 'определенно является массивом, а не целым числом – machineghost

+1

Да, ты прав. Я отредактировал свой ответ. Благодарю. – Zafer

4

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

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

Смежные вопросы