隐藏表单字段值没有真正改变

Hidden form field value not really changed

本文关键字:改变 表单 字段 隐藏      更新时间:2023-09-26

在下面的代码中,为什么我在最后的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已添加到隐藏字段值。到目前为止一切顺利。

然而,当DOM被查看Firebug(或在Chrome DevTools模式)和/或当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()以某种方式"修复"更改的值到表单或其他东西?

http://jsfiddle.net/PeT66/1/

简化了一点,我想你漏掉了右括号

$('#ShipSelect').change(function(e) {
    var ss = $('#ShipSelect').val();
    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());
});