如何编写一个函数来检查输入是否实际上是一个整数? (JavaScript)的

时间:2014-01-26 23:21:42

标签: javascript html client alert

我最近问过一个题为'为什么我的警报始终显示错误信息? (另外)',我很感激有人问我的问题。但是,现在,我有另一个关于我的计算器Javascript程序的问题。

JS:

function activeButton() 
{
    if (document.getElementById("radioAdd").checked === true) 
    {
        var valueOne = Number(document.getElementById("number1".value));
        var valueTwo = Number(document.getElementById("number2".value));
        var result = valueOne + valueTwo;
        alert("Your Result Is " + result);
    }       
}

HTML:

<div id="wrapper">
    <div id="form-move">
        <form name = "calculator" id="calculator">
            <div id="numberInput">
                <input type="number" name="inputNumber1" id="number1" placeholder="Type or Select Your First Number" />
                <input type="number" name="inputNumber2" id="number2" placeholder="Type or Select Your Second Number" />
            </div>
            <div id="radio-input">
                <span class="title">Operators:</span>
                <input type="radio" name="radioInputAdd" id="radioAdd" value="Addition" />
                <label for="radioAdd">Addition</label>
                <input type="radio" name="radioInputAdd" id="radioDivision" value="Division" />
                <label for="radioDivision">Division</label>
                <input type="radio" name="radioInputAdd" id="radioMultiply" value="Multiplication" />
                <label for="radioMultiply">Multiply</label>
                <input type="radio" name="radioInputAdd" id="radioSubtract" value="Subtraction" />
                <label for="radioSubtract">Subtract</label>
            </div>
            <div class="submit">
                <input type="submit" value="Enter" id="submit" onclick="activeButton()" />
            </div>
        </form>
    </div>
</div>

对于名为'inputNumber1'和'inputNumber2'的输入类型,我想编写一个允许Javascript检查并查看用户给出的输入是否为整数的函数。如果不是,则将向用户提供警告框,并且将告知用户他们的输入不是整数,并且他/她将不得不将整数重新提交到计算器中。如果用户给出了一个整数,它将继续并检查并查看单击了哪个单选按钮(如上面的功能所示。)有人可以帮我吗?我已经困住了很多年才找到解决方案!

2 个答案:

答案 0 :(得分:3)

ECMA 6有Number.isInteger的提案,FireFox 16及更高版本支持该提案。否则,它可以按照MDN页面上的说明进行填充

if (!Number.isInteger) {
  Number.isInteger = function isInteger (nVal) {
    return typeof nVal === "number" && isFinite(nVal) && nVal > -9007199254740992 && nVal < 9007199254740992 && Math.floor(nVal) === nVal;
  };
}

这不是解决方案,但它是帮助您确定输入限制以及如何进行验证的重要信息。

-9007199254740991和-9007199254740991是Javascript可以处理的最小和最大安全整数。这些限制是16位有效数字,通常将输入限制为15位有效数字,以使您的支票(RegExp)变得简单。用户输入来自DOM

的字符串

所以:(/^[\-+]?\d{1, 15)$/).test(userInputString)

(可以以' - '或'+'(或两者都不是)开头,后跟1到15位数字)

如果是TRUE,那么您正在使用可由Javascript处理的整数,因此您可以安全地将其强制转换为数字(+userInputStringNumber(userInputString),甚至可以使用parseIntparseFloatMath功能)

任何其他事情变得更加复杂,甚至可能需要使用像bignumber.js这样的任意算术库,除非您不使用客户端上的数字并将其作为字符串发送到服务器做一些工作。

答案 1 :(得分:0)

使用任何Math to integer函数检查Integer条目。

if ((valueOne === Math.round(valueOne)) &&
    (valueTwo === Math.round(valueTwo))) {
    var result = valueOne + valueTwo;
} else {
    var result = "Please enter Integers.";
};