要控制选中的单元格,对应所在一级菜单分值之和小于100,如,中国选择的分值之和小于100,日本选择的分值之和小于100; 现在已经实现,和大于100时,弹出提示,并且将当前选中单元格置为false。 但是一级菜单由列表改为分组时,DOM树就不规则了,这个时候该怎么实现以上校验呢? 贴下js,以便高手指点~ //alert(this.getValue()); var classOnes = []; var classTwos = []; var points = []; var $span = $('.fr-checkbox-checkon'); //获取选中的复选框 var $tds = $("td").has($span); //定义选中复选框的所有单元格 var $trs = $("tr").has($tds); for(var i=0; i<$trs.length;i++){ var classOne = $("td:eq(0)",$($trs)).html(); //获取选中的A3单元格的值 classOnes.push(classOne); //将选中的值放到数组中 var classTwo = $("td:eq(1)",$($trs)).html(); //获取选中的B3单元格的值 classTwos.push(classTwo); var point = $("td:eq(2)",$($trs)).html(); //获取选中C3单元格的值 points.push(point); } //alert(classOnes + ";" + classTwos + ";" + points); //按一级分类求和 var index=0; var classAry=[]; var sumAry=[]; sumAry[0]=0; var aryIndex=0; for(var i=0;i<classOnes.length;i++){ if(classOnes==classOnes[index]){ //alert(classOnes); classAry[aryIndex]=classOnes[index]; sumAry[aryIndex]=parseInt(points)+parseInt(sumAry[aryIndex]); }else{ //alert(classOnes); index=i; classAry[++aryIndex]=classOnes; sumAry[aryIndex]=parseInt(points); } } //alert(classAry+";"+sumAry); //校验是否有超100,有则当前值置为否 for(var i=0;i<sumAry.length;i++){ if(sumAry>100){ FR.Msg.alert('提示','一级菜单:'+classAry+',选中项之和超过100,请重新选择!'); this.setValue(false); } } |