我创建了一个表格,如果以下任一选项为true,将向用户收取$ 5的额外费用:
题字字段不为空|包含文字
OR
单选按钮 '装饰PETITES字花souhaitee'
OR
单选按钮“ Decoration Chocolat et Fruits souhaitee”
如您在以下视频中看到的,我的脚本反应异常,因此没有将额外费用应用到总价中:
大奖赛(价格)+补充(额外费用或收费)=总(总价格)
我不知道为什么。在这里需要您的专业知识。预先感谢。
下面是对形式代码的链接:
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));
}
})
答案 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));
});
注意:在学习环境中,一切都很好。在生产环境中,您的代码存在漏洞,使知识渊博的用户可以设置他们想要的价格。