5

我制作了一个表单,用户输入他们想要的弹出窗口的宽度和高度值。我正在使用window.open它。

所以我想我需要检查宽度和高度的值是否是整数。我有一个函数可以检查一个变量是否是一个整数,它是......

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

但我不知道如何将此函数调用到宽度和高度函数以检查用户是否输入了整数。任何人都可以帮忙吗?

4

3 回答 3

6

这是对主题中提到的问题的回答,而不是正文中的实际问题:)。

以下方法更准确地确定字符串是否为实整数。

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

例如,您当前的方法验证“7.5”。

编辑:根据 machineghost 的评论,我修复了正确处理数组的函数。新功能如下:

function isInteger(possibleInteger) {
        return Object.prototype.toString.call(possibleInteger) !== "[object Array]" && /^[\d]+$/.test(possibleInteger);
}
于 2010-09-05T10:50:00.930 回答
4

如果您担心性能,另一种答案。

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

负载测试结果与 Zafer 在 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

于 2013-04-29T17:05:31.857 回答
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" />
于 2010-09-05T09:06:18.223 回答