【问题标题】:Hidden form field value not really changed隐藏的表单字段值没有真正改变
【发布时间】:2013-03-23 08:26:04
【问题描述】:

在下面的代码中,为什么我在最终的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 模式下)AND/OR 查看 DOM 时,按下 BuyNow 按钮时,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() 将更改的值“修复”到表单或其他内容?

【问题讨论】:

  • 为什么要靠客户来计算运费?如果我使用我的 JavaScript 调试器将此隐藏字段的值设置为 0 会怎样?你不会向我收取运费吗?
  • 您将无法通过查看源代码来查看使用 javascript 动态完成的更改,但如果您使用控制台,您应该会看到值的更改。
  • 测试$('#shipping_1').attr('value', ship1); 确定。我看不出有错
  • @cdhowie 谢谢。回到绘图板。仍然不明白为什么值到达 PPal 时是错误的。
  • 代码示例缺少结束);,这是一个错字吗?

标签: javascript jquery


【解决方案1】:

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

【讨论】:

  • 感谢您的回复。我的帖子是一个 sn-p,我未能提供结束 );,但它存在于我的实际代码中(只是更进一步)。我更新了问题来解决这个问题。至于你的回答,我现在的工作方式和你提供的完全一样。
  • 您还没有看到隐藏字段的新值吗?我检查了 Firebug,它确实发生了变化
猜你喜欢
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多