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

时间:2013-03-22 20:14:37

标签: javascript jquery

在下面的代码中,为什么我会在最终的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美元。到目前为止一切都很好。

但是,当按下BuyNow按钮时,使用Firebug(或Chrome DevTools模式) AND / OR 查看DOM时,shipping_1字段为旧值($ 10短)。


更新: 我看到this promising post,它确切地描述了我的问题,但解决方案不起作用。这就是他们的建议:

document.form_name.field_name.value = your_value

因此,我注释掉了这一行:

$('#shipping_1').val(ship1);

并将其替换为:

document.paypal_cart.shipping_1.value = ship1;

结果与我现在没有什么不同。仍然提交旧值(使用firebug查看时可见)。我是否需要使用.on()以某种方式将已更改的值“修复”到表单或其他内容?

1 个答案:

答案 0 :(得分:0)

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