我有一个服务器端创建的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);
}
});
答案 0 :(得分:1)
$(textarea).append(txt)不像你想的那样工作。加载页面时,textarea中的文本节点将设置该表单字段的值。之后,可以断开文本节点和值。当您在字段中键入时,值会更改,但DOM上的文本节点不会更改。然后使用append()更改文本节点,浏览器将删除该值,因为它知道标记内的文本节点已更改。
所以你想设置值,你不想追加。使用jQuery的val()方法。
您必须使用$('#textarea').val($('#textarea').val() + ' ' + $name + ' ' + $total);
除了我不确定你为什么把$放在你的变量中,与PHP混在一起?