Javascript 如何在返回浏览器时防止重新计算值?

Javascript 如何在返回浏览器时防止重新计算值?,javascript,php,jquery,wordpress,gravity-forms-plugin,Javascript,Php,Jquery,Wordpress,Gravity Forms Plugin,我有一个多页的预订表,根据几个因素计算所需的交通服务数量。您首先选择一些乘客(“#输入#2#6”),根据您选择的车辆类型,您将需要多少车辆,因此当您选择车辆时,“数量”字段(“输入#2#20”)将更新。在下一页/步骤中,您必须选择是单程还是往返,因此当您选择往返时,数量字段将乘以2。然后在下一页/步骤中,您将看到订单摘要(确认页) 问题是,对于当前代码,如果您在确认页面上,并决定返回上一页以更改某些内容(可能您决定不想要往返,只需要单向),则数量编号保留新值,现在在选择往返时再次乘以2

我有一个多页的预订表,根据几个因素计算所需的交通服务数量。您首先选择一些乘客(“#输入#2#6”),根据您选择的车辆类型,您将需要多少车辆,因此当您选择车辆时,“数量”字段(“输入#2#20”)将更新。在下一页/步骤中,您必须选择是单程还是往返,因此当您选择往返时,数量字段将乘以2。然后在下一页/步骤中,您将看到订单摘要(确认页)

问题是,对于当前代码,如果您在确认页面上,并决定返回上一页以更改某些内容(可能您决定不想要往返,只需要单向),则数量编号保留新值,现在在选择往返时再次乘以2

    jQuery(document).ready(function ($) {
var totalBook;
    $('#input_2_12').change(function () {
        switch ($(this).val()) {
            case 'Escalade|49':
                $('#input_2_20').val(1);
                    totalBook = Math.ceil($('#input_2_6').val() / 5);
                $("#input_2_20").val(totalBook);
                break;
            case 'Suburban|0':
                $('#input_2_20').val(1);
                    totalBook = Math.ceil($('#input_2_6').val() / 6);
                $("#input_2_20").val(totalBook);
                break;
            case 'Van|14':
                $('#input_2_20').val(1);
                    totalBook = Math.ceil($('#input_2_6').val() / 10);
                $("#input_2_20").val(totalBook);
                break;
        }
    });
    totalBookNew = $("#input_2_20").val();
    $('input:radio[name="input_7"]').change(function () {
$('#input_2_20').val(totalBookNew);
        if ($(this).val() == 'Round trip'){
            $('#input_2_20').val(totalBookNew);
            newTotal = totalBookNew * 2;
            $('#input_2_20').val(newTotal);
        }
        else if ($(this).val() == 'One way'){
            $('#input_2_20').val(totalBookNew);
        } 
    });
});
我尝试在第二个函数上使用第一个函数中的'totalBook'值,但它返回未定义的值,这就是我创建totalBookNew的原因


我真的很感激任何帮助

看起来主要问题是在进行计算后,将计算值设置到原始输入字段中。最好将计算结果存储在隐藏的html输入中的其他位置。因此,您将有一个名为以下内容的输入:

<input type="hidden" id="input_2_20_calculated" value=0>

作为一个警告,您应该在后端重新计算。不要在前端计算,而要相信后端的计算。在提交和发布假数字时很容易处理表单数据。

我非常感谢您。额外隐藏的输入字段让人大开眼界!关于你的旁注。。。我必须重新做同样的计算吗?或者只是一些验证?我将Wordpress与gravity表单一起使用,但我对PHP(或者您可能已经注意到的js)不是很在行
totalBookNew = $("#input_2_20").val();
$('input:radio[name="input_7"]').change(function () {
$('#input_2_20').val(totalBookNew); //This line can be deleted
    if ($(this).val() == 'Round trip'){
        $('#input_2_20').val(totalBookNew); //You can also delete this line
        newTotal = totalBookNew * 2;
        $('#input_2_20_calculated').val(newTotal);
    }
    else if ($(this).val() == 'One way'){
        $('#input_2_20_calculated').val(totalBookNew);
    } 
});