取消选中表单元素时,如何减去 javascript 变量的值

How do I subtract the value of a javascript variable when form element is unchecked

本文关键字:javascript 何减去 变量 表单 元素 取消      更新时间:2023-09-26

注意,这不是我的代码,也不是表单中的实际代码。 这只是我的测试版本,但确实代表了我想做的事情。

给定以下代码,如何让脚本在取消选中复选框时减去传递的值:

<!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>

就目前而言,编写函数代码的人都没有考虑到人们在提交表单之前可能会选中和取消选中该框(其中包括在提交之前添加到 amount 变量中的更多字段和其他数字)。 由于这个原因,已经有一些关于过度收费的报告,所以我需要弄清楚如何阻止它发生,但我对javascript/jquery知之甚少。

尝试:

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);
    }
}​

这里的工作示例

这将检查是否使用 .is() 检查checkbox,如果是,则金额将添加到当前值(如果不

减去)。

另请注意,parseInt需要第二个参数 - radix建议您包含此值以确定结果...此处为解析Int 提供文档

你能试试这个吗

      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());
        }

我们可以做的是在我们可以首次设置的函数上方定义一个变量。代码如下:

       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());
        }