元素值更改时输入未相应更新

时间:2019-02-02 05:20:03

标签: javascript jquery

我创建了一个表格,如果以下任一选项为true,将向用户收取$ 5的额外费用:

题字字段不为空|包含文字

OR

单选按钮 '装饰PETITES字花souhaitee'

OR

单选按钮“ Decoration Chocolat et Fruits souhaitee”

如您在以下视频中看到的,我的脚本反应异常,因此没有将额外费用应用到总价中:

click here

大奖赛(价格)+补充(额外费用或收费)=总(总价格)

我不知道为什么。在这里需要您的专业知识。预先感谢。

下面是对形式代码的链接:

https://www.dropbox.com/s/3duf4oe2qerr1rt/FORMCODE.txt?dl=0

这是我的脚本(js文件):

$(window).bind('change', function() {

    /* Inscription */
    var textmessage = $('#desserttextmessage').val();
    /* Prix */
    var productprice = parseFloat($('#productprice').val());
    /* Supplément */
    var surcharge = 5.00;
    var nosurcharge = 0.00;
    var totalsurcharge = parseFloat(surcharge);
    var productaddfee = parseFloat($('#productaddfee').val());
    var total = parseFloat(productprice).toFixed(2);
    var totalfee = parseFloat(productprice + productaddfee).toFixed(2);
    /* Decoration */
    var valuedecorflower = $('input[name=dessertdecorflowerID]:checked').val();
    var valuedecorchocolate = $('input[name=dessertdecorchocolateID]:checked').val();

        if (textmessage != '' || valuedecorchocolate == 'Décoration chocolat et fruits souhaitée' || valuedecorflower == 'Décoration petites fleurs souhaitée') {

            $('#productaddfee').val(parseFloat(totalsurcharge).toFixed(2));
            $('#total').val(parseFloat(totalfee).toFixed(2));

        } else if (textmessage == '' && valuedecorchocolate == 'Pas de décoration chocolat et fruits' && valuedecorflower == 'Pas de décoration petites fleurs') {

            $('#productaddfee').val(parseFloat(nosurcharge).toFixed(2));
            $('#total').val(parseFloat(total).toFixed(2));

        }

})

1 个答案:

答案 0 :(得分:1)

我认为问题是此行:

var productaddfee = parseFloat($('#productaddfee').val());

基本上,在某些情况下,您使用的是旧的(可能是无效的)值来计算新值。

清理后,看起来应该像这样:

$(window).bind('change', function() {
    // Get the form values we need to work with
    /* Inscription */
    var textmessage = $('#desserttextmessage').val();
    /* Prix */
    var productprice = parseFloat($('#productprice').val());
    /* Decoration */
    var valuedecorflower = $('input[name=dessertdecorflowerID]:checked').val();
    var valuedecorchocolate = $('input[name=dessertdecorchocolateID]:checked').val();

    // compute the surcharge
    var surcharge = 0.00;
    if (textmessage != '' || valuedecorchocolate != 'Pas de décoration chocolat et fruits' || valuedecorflower != 'Pas de décoration petites fleurs') {
        surcharge = 5.00;
    }

    // compute the total
    var total = productprice + surcharge;

    // set the results
    $('#productaddfee').val(surcharge.toFixed(2));
    $('#total').val(total.toFixed(2));
});

注意:在学习环境中,一切都很好。在生产环境中,您的代码存在漏洞,使知识渊博的用户可以设置他们想要的价格。