我有一个表格,其中包含带有文本字段和相邻复选框的表格,当选中该复选框时,我需要将已检查的文本数量(金额)相加
金额的总和应显示在
中<div id="total" style="color:red">500</div>
<tr class="">
<td style="font-size:11px; padding:3px">3795</td>
<td style="font-size:11px; padding:3px"><input type="text" value="" size="6" name="chq_no"></td>
<td style="font-size:11px; padding:3px"><input type="text" value="0" size="6" name="amount"></td>
<td style="font-size:11px; padding:3px; width:20px"><input type="checkbox" value="3795" name="id"></td>
</tr>
这是我的试用版无效
var sum = 0;
$('checkbox :checked').each(function() {
sum += $(this).parents('tr:first').find('input[name="amount"]').val();
});
$('#total').html(sum);
答案 0 :(得分:1)
在更改复选框时,解析每个input[type=text]
获取其值并将其添加并将其放入#total
。
$(document).ready(function(){
$("input[type=text], input[type=checkbox]").on("change keyup", function(){
var sum = 0;
if($("input[type=checkbox]").is(":checked"))
{
$("input[type=text]").each(function(){
sum += +$(this).val();
});
}
$("#total").html(sum);
});
});
工作Fiddle
答案 1 :(得分:1)
这主要是你和@void已经想到的,但这是一个真正的剥离版本,完成了(我认为)你一直在寻找的东西。
http://jsfiddle.net/k1xfehrq/6/
$(document).ready(function () {
function sumRows() {
var sum = 0,
total = $('#total');
$('tr').each(function () {
var amount = $(this).find('input[name="amount"]'),
checkbox = $(this).find('input[name="include"]');
if (checkbox.is(':checked') && amount.val().length > 0) {
sum += parseInt(amount.val(), 10);
}
});
total.text(sum);
}
// calculate sum anytime checkbox is checked or amount is changed
$('input[name="amount"], input[name="include"]').on('change keyup blur', sumRows);
});
答案 2 :(得分:0)
几个想法:
$('input[type="checkbox"]:checked')...
我不确定你的选择器会找到什么。我会console.log()
在你的.each()
功能中,以确保你进入那里。
其次,确保.val()
返回的值是整数而不是字符串。 (也许使用parseInt()
明确强制它。)
答案 3 :(得分:0)
试试这个:
$('input[type="checkbox"]').change(function() {
var sum = 0;
if($(this).is(':checked')){
sum += +$(this).parents('tr:first').find('input[name="amount"]').val();
}
$('#total').html('');
$('#total').html(sum);
});
演示:
答案 4 :(得分:0)
试试这个,
$(':checkbox').on('change', function(){
var sum = 0;
$(':text').each(function(){
sum += parseInt($(this).val(), 10);
});
$("#total").html(sum);
});
<强> FIDDLE 强>
答案 5 :(得分:0)
$(function(){
function checkChanged(){
var sum = 0;
$("input[type='checkbox']:checked")
.each(function(index, item){
sum+= Number($(item).parents("tr").find("input[type='text'][name='amount'][value]").val());
});
$("#total").html(sum);
}
$("table").on("click", "input[type='checkbox']", checkChanged);
});