1:首先考虑复选框存在两种情况:一个是全选,全不选;另一个是单个选中与取消事件。
2:看实例.
<table>
<tr>
<td><input type="checkbox" title="全选" class="checkbox0" id="checkAll000" /></td>
<td>年份</td>
<td>期数</td>
<td>值</td>
</tr>
<#if olist1??>
<#list olist1 as o>
<tr year="${o.ord_year!}" iss="${o.iss!}">
<td><input type="checkbox" name="checkedid" value="${o.cus_id!}-${o.user_id!}-${o.ord_year!}-${o.iss!}" /></td>
<td>${o.ord_year!}</td>
<td>${o.iss!}</td>
<td class="vl">${o.value!}</td>
</tr>
</#list>
</#if>
<#if hjlist1??>
<#list hjlist1 as hj1>
<tr class="hj" year="${hj1.ord_year!}" iss="${hj1.iss!}">
<td>合计</td>
<td>${hj1.ord_year!</td>
<td>${hj1.iss!}</td>
<td class="hjvl" stock="200">需要算出来的值</td>
</tr>
</#list>
</#if>
</table>
3:js代码
核心方法:
function parseCheckBox(chk){
var ccc = $(chk).prop("checked");//是否选中true/false
var year =$(chk).parents("tr").attr("year");
var iss =$(chk).parents("tr").attr("iss");
//tr中的td的值
$(chk).parents("tr").find("td[class='vl']").each(function(g){
var v = $.trim($(this).text());
if(v.length==0){
v = 0;
}
v = parseInt(v);
var edi = $.trim($(this).attr("edi"));
$(".heji").each(function(n){//合计的tr
var y = $(this).attr("year");
var i = $(this).attr("iss");
if(y==year && i == iss){
$(this).find("td[class='hjvl']").each(function(){
if($(this).attr("edi")==edi){
//库存
var stock = $.trim($(this).attr("stock"));
if(stock.length==0){
stock=0;
}
stock = parseInt(stock);
//旧合计
var s = $.trim($(this).text());
if(s.length==0){
s=0;
}
s = parseInt(s);
if(ccc){//选中
if(v+s>0){
if((v+s)>stock){
$(this).css({"color":"red"});
}
$(this).text(v+s);
}
}else{//取消选中
if(s-v>0){
if((s-v)>stock){
$(this).css({"color":"red"});
}else{
$(this).css({"color":"black"});
}
$(this).text(s-v);
}else{
$(this).text("");
}
}
}
});
}
});
});
}
$(function(){
//全选
$("#checkAll000").click(function(){
var v = $(this)[0].checked;
$("input[name='checkedid']").each(function(){
if(!this.checked){//判断之前是否已经选中
if (v) {
this.checked = true;
parseCheckBox($(this));
}
}else{
if (!v) {//判断之前是否已经没有选中
this.checked = false;
parseCheckBox($(this));
}
}
});
});
//单个复选框点击
$("input[name='checkedid']").click(function(){
parseCheckBox($(this));
});
});