【问题标题】:jQuery dynamically updating hidden input value based on quantityjQuery根据数量动态更新隐藏的输入值
【发布时间】:2017-10-14 01:55:34
【问题描述】:

我编写了一些 jQuery 代码来根据用户选择的数量动态更新隐藏的输入值:

$('input[name^="quant"]').change(function () {
       updateTotal();
    });

function updateTotal() {
        var count = 1;
        $('input[name^="quant"]').each(function() {
            var qty = $(this).val();
            var price = $(this).siblings('input[name^="price"]').val();
            $('input[name=item_name_'  + count + ']').val(qty + ' x ' + $('input[name=item_name_'  + count + ']').val());

            count++;
        });
    }

$('input[name=item_name_' + count + ']').val(qty + ' x ' + $('input[name=item_name_' + count + ']').val()); 行通过在末尾附加当前输入值的值来替换整个输入。

例如,如果数量是 4,那么元素将如下所示:

<input type="hidden" name="item_name_1" value="4 x Front Row Seats">

我遇到的问题是这发生在更改时,每次我更改数量时都会这样做:

<input type="hidden" name="item_name_1" value="5 x 4 x Front Row Seats">
<input type="hidden" name="item_name_1" value="3 x 5 x 4 x Front Row Seats">
<input type="hidden" name="item_name_1" value="4 x 3 x 5 x 4 x Front Row Seats">

等等……

有没有办法在我这样做之前保存隐藏输入的值,这样它就不会像这样附加?

【问题讨论】:

  • 将数量放在隐藏字段中会使 far 更有意义。您根本不需要额外的座位类型文本
  • @RoryMcCrossan 输入字段需要显示数量,后跟项目名称,因为它是正在生成的 PayPal 隐藏输入。

标签: javascript jquery


【解决方案1】:

我找到了解决这个问题的更好方法。当我尝试设置 PayPal 商品的数量时,我使用了 this approach

我只需要将数量设置为项目的隐藏输入,而不是像@Rory McCrossan 指出的那样手动尝试创建值来显示它:

<input type="hidden" name="quantity_1" value="1">

【讨论】:

    【解决方案2】:

    检查这个

    $('input[name^="quant"]').change(function() {
      updateTotal();
    });
    
    function updateTotal() {
      var count = 1;
      $('input[name^="quant"]').each(function() {
        //alert($(this).val());
        var qty = $(this).val();
    
        $('input[name=item_name_' + count + ']').val(qty + ' x '+'Front Row Seats');
    
        count++;
      });
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <label>Quantity</label>  <input type="text" name="quant"><br />
    
    <label>Result</label>    <input type="text" name="item_name_1" value="">

    【讨论】:

    • 您刚刚将Front Row Seats 硬编码到值中。这是错误的,需要从当前输入值中获取名称。
    • 您是说这个名称,即“前排座椅”作为值存在于单独的文本框中吗?
    • 不,我是说Front Row Seats 是来自另一个隐藏输入的文本,正如您在我的代码中看到的那样:$('input[name=item_name_' + count + ']').val(qty + ' x ' + $('input[name=item_name_' + count + ']').val());
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多