JQuery不验证大于9999的数字

时间:2013-05-09 21:28:00

标签: jquery

这真的很奇怪。

我正在研究的morgage计算器(我之前有另一个问题)现在按照我想要的方式工作除了......它不会验证大于9999的值。

如果你转到下面的链接,你将能够看到我的意思。

http://jsfiddle.net/fLT8C/1/

代码应该确保在预付定金和购买价格中输入的值实际上是数字。如果不是,则会显示一条消息,如果有,则代码验证购买价格不高于预付款金额。

代码有效...但仅当您输入的值为9999或更低时。如果您这样做,例如...... 1350000和5000预付款,则代码不会提交。如果你做9999和5000,没问题。

我真的很困惑。有什么想法吗?

这是我的HTML。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>Assignment 8.1</title>
    <link rel="stylesheet" type="text/css" href="css/css.css">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <script type="text/javascript" src="js/js.js" charset="utf-8"></script>
</head>

<body>
        <h1>Mortgage Calculator</h1>

    <form action="calc.php" method="post" id="mortgage-form">
        <p class="errorMessage" id="shouldBeNumber">*This value can only contain numbers</p>
        <p id="pPrice"><span class="errorMessage" id="PPmustBeNumber">*</span>Purchase Price:
            <input type="text" name="purchase-price" id="purchase-price" value="0" />   <span class="errorMessage" id="purchasePriceError">Please enter a number value!</span>

        </p>
        <p id="dPayment"><span class="errorMessage" id="DPmustBeNumber">*</span>Down Payment:
            <input type="text" name="down-payment" id="down-payment" value="0" />   <span class="errorMessage" id="downPaymentError">Down payment value must be less than Purchase Price!</span>

        </p>
        <p id="term">Select Term:
            <select name="loan-term" id="loan-term">
                <option value="noValueSelected">-- Select a Term --</option>
                <option value="15yrs">15 Years</option>
                <option value="20yrs">20 Years</option>
                <option value="30yrs">30 Years</option>
            </select><span class="errorMessage" id="termRequired"> * Term is required.</span>

        </p>
        <div id="rate"></div>
        <p>
            <input type="submit" name="submit" id="submit" value="Calculate!" />
        </p>
    </form>
    <footer>
        <p>&copy; Copyright by Ricardo</p>
    </footer>
</body>

</html>

请在我的jsfiddle中查看我的jquery。

3 个答案:

答案 0 :(得分:5)

我认为问题在于你的功能:

function containsNumber(val) {
    return /^(\d|,)+$/.test(val)
}

使用它:

function containsNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

答案 1 :(得分:0)

您似乎使用自定义正则表达式模式来检测它是否为数字。 为什么不用原生的javascript方法呢?

isNaN(val)

检查val是否包含有效数字。 所以在你的情况下,使用它。

function containsNumber(val) {
        return !isNaN(val);
}

http://jsfiddle.net/tfHq2/

答案 2 :(得分:0)

我将三个值更改为整数 - http://jsfiddle.net/fLT8C/3/

    var purchasePrice = parseInt($('#purchase-price').val());
    var downPayment = parseInt($('#down-payment').val());
    var loanTerm = parseInt($('#loan-term').val());