2

これは本当に奇妙です。

私が取り組んでいた住宅ローン計算機 (この質問の前に別の質問がありました) は、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を見てください。

4

3 に答える 3

5

問題はあなたの機能だと思います:

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

これを使って:

function containsNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
于 2013-05-09T21:37:13.310 に答える
0

カスタム正規表現パターンを使用して、数値であるかどうかを検出しているようです。ネイティブの JavaScript メソッドを使用してみませんか?

isNaN(val)

val に有効な数値が含まれていないかどうかを確認します。したがって、あなたの場合は、これを使用してください。

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

http://jsfiddle.net/tfHq2/

于 2013-05-09T21:35:47.553 に答える
0

3 つの値を整数に変更しました - http://jsfiddle.net/fLT8C/3/

    var purchasePrice = parseInt($('#purchase-price').val());
    var downPayment = parseInt($('#down-payment').val());
    var loanTerm = parseInt($('#loan-term').val());
于 2013-05-09T21:40:04.610 に答える