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()if it is 检查,如果没有减去,则将金额添加到当前值。

另请注意,它parseInt需要第二个参数 -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 回答