将每个div的内容附加到textarea

时间:2015-05-05 10:32:35

标签: javascript jquery html append

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

我现在要做的是在每行中列出每个项目的名称,数量和总数。

到目前为止,我已经得到以下内容(其中的附加部分目前无效):

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

            }

        });

1 个答案:

答案 0 :(得分:1)

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

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

您必须使用$('#textarea').val($('#textarea').val() + ' ' + $name + ' ' + $total);

之类的内容

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