JavaScript代码:
//办事处抽取比例改变,更新其他数据
....function changeOfficeSampleScale(obj,flushOfficeRow){
var row=obj.parentNode.parentNode; //取得所在行
var officeCode=row.id; //取得行的Id
if(isNaN(obj.value)){//如果不是数字,则提示
alert("您输入不为数字,请输入数字!");
obj.value=0;
var p=0;
//return;
}else{
if(obj.value<0){
alert("请输入非负数!");
obj.value=0;
var p=0;
}else{
var p=Math.ceil(obj.value); //转为数值
}
}
if(p>=100){
p=100;
obj.value=p;
}
var crows=document.getElementsByName("sub_"+officeCode);
for(var i=0;i<crows.length;i++){
var crow=crows[i];
if(crow.cells.item(4).innerText==0){
continue;
}
var txtControl=crow.cells.item(2).children.item(0);
txtControl.value=p;
changeSampleScale(txtControl);
}
initOfficeRow(row);
if(flushOfficeRow){
contAllTotal(); //这个可以查看上一篇 “以row.cells.item(列序).innerText这种方式来为表格赋值取值 ”
}
}
JSP代码:
<table id="dispTable">
<tr class="bg">
<td>办事处</td>
<td>服务站</td>
<td id="smpScale">抽取比例</td>
<td id="smpNum">抽取数量</td>
<td>任务总量</td>
<td>抽取数量</td>
<td>抽取比例</td>
<td>剩余数</td>
</tr>
<s:set name="currentOffice" value=""/>
<s:iterator id="item" value="result">
<s:if test="#currentOffice!=officeCode">
<s:set name="currentOffice" value="officeCode"/>
<tr id='${officeCode}' status='0'>
<td id='officeCode_td' value='${officeCode}' οnclick="selectOffice(this.parentNode)" title="单击展开">${officeCode}-${officeName}</td>
<td></td>
<td id="smpScale"><input style="width:90%" value="${sampleScale}" οnchange="changeOfficeSampleScale(this,true)" /></td>
<td id="smpNum"><input style="width:90%" value="${sampleNum}" οnchange="changeOfficeSampleNum(this,true)"/></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</s:if>
<s:set name="dispNum" value="new java.lang.Double(@java.lang.Math@ceil(sampleScale*totalNum/100.0)).intValue()"/>
<s:if test="totalNum>0">
<tr id='sub_${officeCode}' style="display: none;">
<td><input type="hidden" name="officeCode" value="${officeCode}" /></td>
<td>${serverCode}-${serverName}<input type="hidden" name="serverCode" value="${serverCode}" /> </td>
<td id="smpScale"><input name="sampleScale" style="width:90%" value="${sampleScale}" οnchange="changeSampleScale(this,true)"/></td>
<td id="smpNum"><input name="sampleNum" style="width:90%" value="${dispNum}" οnchange="changeSampleNum(this,true)"/></td>
<td>${totalNum}</td>
<td>${dispNum}</td>
<td>${sampleScale}</td>
<td>${totalNum-dispNum}</td>
</tr>
</s:if>
<s:else>
<tr id='sub_${officeCode}' style="display: none;">
<td></td>
<td>${serverCode}-${serverName}</td>
<td id="smpScale"><input style="width:90%" value="${sampleScale}" disabled="disabled"/></td>
<td id="smpNum"><input style="width:90%" value="${dispNum}" disabled="disabled"/></td>
<td>${totalNum}</td>
<td>${dispNum}</td>
<td>${sampleScale}</td>
<td>${totalNum-dispNum}</td>
</tr>
</s:else>
</s:iterator>
</table>