在下面的代码中,为什么我在最终的 alert() 中获得了新值,但在表单提交时获得了旧值(以及使用 firebug 查看隐藏字段时)?
表单标签内的隐藏字段元素:
<input type="hidden" id="shipping_1" name="shipping_1" value="3.99">
选择Shipto下拉列表后,使用jQuery来更新字段值:
$('#ShipSelect').change(function(e) {
var ss = $('#ShipSelect').val();
if (ss=='International') {
alert("International orders add $10 S&H");
ship1 = ($('#shipping_1').val())*1 + 10;
alert('Shipping_1 val is now: ' + ship1);
$('#shipping_1').val(ship1);
alert('Reading the field directly: ' + $('#shipping_1').val());
}
});
警报显示 10 美元已添加到隐藏字段值。到目前为止,一切都很好。
但是,当使用 Firebug(或在 Chrome DevTools 模式下)查看 DOM和/或按下 BuyNow按钮时,该shipping_1
字段为旧值(不足 10 美元)。
更新:我看到了这篇有前途的帖子,它准确地描述了我的问题,但解决方案不起作用。这是他们的建议:
document.form_name.field_name.value = your_value
因此,我注释掉了这一行:
$('#shipping_1').val(ship1);
并将其替换为:
document.paypal_cart.shipping_1.value = ship1;
结果和我现在的没有什么不同。旧值仍被提交(使用 firebug 查看时可见)。我是否需要以某种方式使用 .on() 将更改的值“修复”到表单或其他内容?