2

これは私のコードでも、フォームの実際のコードでもないことに注意してください。これは私のテストバージョンですが、私がやりたいことを表しています。

次のコードがある場合、チェックボックスが選択されていないときに、渡された値を減算するようにスクリプトを取得するにはどうすればよいですか。

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

    <head>
        <title>form test</title>
        <script type="text/javascript" charset="utf-8" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
        <script type="text/javascript">
            function updateAmount(amount) {
                parseInt(amount);
                if ($('#amount').val()) {
                    parseInt(amount);
                    amount = amount + parseInt($('#amount').val());
                }
                $('#amount').val(amount);
                alert('Amount: ' + $('#amount').val());
            }
        </script>
    </head>

    <body>
        <form action="" method="post" name="form-test">
            <input onclick="updateAmount(150)" class="inputbox" id="reservationfee0"
            value="Registration Fee" type="checkbox" />
            <strong>$150</strong>Reservation Fee</form>
    </body>

</html>

現状では、関数をコーディングした人は、フォームを送信する前にそのボックスをオンまたはオフにする可能性があることを考慮していませんでした(送信前に金額変数に追加されるフィールドやその他の数値が含まれます)。これによる過充電の報告がいくつかあるので、それを防ぐ方法を理解する必要がありますが、javascript/jqueryについてはほとんど知りません。

4

3 に答える 3

2

試す :

function updateAmount(amount) {
    $amount = $('#amount'); // cache for later use
    if ($('#reservationfee0').is(':checked')) {
        $amount.val(parseInt($amount.val(), 10) + amount);
    } else {
        $amount.val(parseInt($amount.val(), 10) - amount);
    }
}​

ここでの実例

これは、がチェックされているかどうかcheckboxをチェックします。チェック.is()されている場合は、減算されていない場合は、金額が現在の値に加算されます。

parseIntまた、2番目のパラメータを取ることに注意してください-radix結果を確実にするためにこの値を含めることをお勧めします...ここでparseIntのドキュメント

于 2012-06-25T16:07:45.030 に答える
0

これを試すことができますか

      function updateAmount(amount) {
            parseInt(amount);
            if ($('#reservationfee0').prop('checked')) {
                amount = amount + parseFloat($('#amount').val());
            }
         else{
              amount = parseFloat($('#amount').val())-amount;
         }
            $('#amount').val(amount);
            alert('Amount: ' + $('#amount').val());
        }
于 2012-06-25T16:05:26.757 に答える
0

私たちにできることは、初めて設定できる関数のすぐ上に変数を定義することです。コードは次のようになります。

       var chk=1;
       function updateAmount(amount) {
            parseInt(amount);
            if ($('#amount').val() && document.getElementById('reservationfee0').checked && chk==1) {
                chk=0;
                parseInt(amount);
                amount = amount + parseInt($('#amount').val());
            }
            $('#amount').val(amount);
            alert('Amount: ' + $('#amount').val());
        }
于 2012-06-25T16:06:50.897 に答える