【问题标题】:Append contents of each div to textarea将每个 div 的内容附加到 textarea
【发布时间】:2015-07-15 01:04:34
【问题描述】:

我有一个在服务器端创建的 div 列表,每个都有价格、数量(由用户输入)和名称。我已经设法使用 jQuery 来计算每个的总数并将它们相加。

我现在想做的是逐行列出我的 textarea 中具有值的每个项目的名称、数量和总数。

到目前为止,我得到了以下内容(其中的附加部分目前不起作用):

$(document).ready(function () {
    $(".product-row input").change(multInputs);
           function multInputs() {
               var mult = 0;
               // for each row:
               $("div.product-row").each(function () {
                   // get the values from this row:
                   var $price = $('.price', this).html();
                   var $quantity = $('.quantity', this).val();
                   var $total = ($price * 1) * ($quantity * 1);
                   // set total for the row
                   $('.multTotal',this).text($total);
                   mult += $total;
                   $('#textarea',this).append($name).append($total);
               });
        $("#total").html(mult);
    }
});

如果我能解决这个问题,我很确定我可以解决每次更改时如何添加总计并清除 textarea(我不是在找人来完成所有工作)。

非常感谢任何关于我的 textarea 没有填充的原因的反馈。

编辑:解决方案,下面的 braks 很好地解释了导致以下(工作!)代码:

$(document).ready(function () {
           $(".product-row input").change(multInputs);

           function multInputs() {
               var mult = 0;
               // for each row:
               $("div.product-row").each(function () {
                   // get the values from this row:
                   var price = $('.price', this).html();
                   var quantity = $('.quantity', this).val();
                   var name = $('.name', this).html();
                   var total = (price * 1) * (quantity * 1);
                   // set total for the row
                   $('.multTotal',this).text(total);
                   mult += total;

                   $('#textarea').val($('#textarea').val() + ' ' + name + ' ' + total);
               });
               $("#total").html(mult);

            }

        });

【问题讨论】:

  • $('#textarea',this).val($name + $total); - $name 定义在哪里
  • 过去你html code
  • 这里需要更多细节;为什么它不起作用?你期待什么输出?此外,查看您的 HTML 也会有很大帮助。

标签: javascript jquery html append


【解决方案1】:

$(textarea).append(txt) 不像你想象的那样工作。加载页面时,文本区域内的文本节点将设置该表单字段的值。之后,文本节点和值可以断开连接。当您在字段中键入时,值会发生变化,但 DOM 上的文本节点不会发生变化。然后使用 append() 更改文本节点,浏览器会删除该值,因为它知道标签内的文本节点已更改。

所以你想设置值,你不想追加。为此使用 jQuery 的 val() 方法。

你必须使用$('#textarea').val($('#textarea').val() + ' ' + $name + ' ' + $total);之类的东西

除了我不确定你为什么把 $ 放在你的变量中,和 PHP 混在一起?

【讨论】:

  • 你把 $ 放在我的变量之前是完全正确的,d'oh!我会玩这个并发布结果,谢谢。
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多