javascript - 当您返回浏览器时如何避免重新计算值(value)?

标签 javascript php jquery wordpress gravity-forms-plugin

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

问题是,使用当前代码,如果您在确认页面上并决定返回上一页进行更改(也许您决定不需要往返而只需要单向) ,数量保持新值,现在选择往返时再次乘以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>

然后不是将计算值设置回输入,而是将其设置在隐藏输入中。隐藏的输入将与表单一起传递,因此您将能够使用计算出的值。这就是你得到重复的原因,因为每次触发计算时,它都会将之前的计算值加倍。

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

作为注意事项,您应该在后端重新计算。不要在前端计算并相信后端的那些计算。在提交和发布假号码时很容易操纵表单数据。

关于javascript - 当您返回浏览器时如何避免重新计算值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541074/

相关文章:

javascript - css属性的自定义

javascript - 在angularjs ui-select指令更新后,如何默认在搜索字段中设置更新值?

javascript - 用户交互后取消滚动

jquery - 如何在提交前验证 jQuery 中的复选框是否已选中

javascript - 在表中选择更改选项时弹出模型

php - 如何登录网站或访问现有 cookie 以使用 file_get_contents

javascript - Div从左上角滑动到右上角的动画

php - 此代码段无法正确设置 cookie 的任何原因?

javascript - 为什么我的 form.action 与表单提交的不同?

php - 可以用ASP调用PHP soap吗?