<script language="javascript">
function alterRow(rowsCount,cellsCount,postRowsCount)//增加或删除行
{//rowsCount:table行数,cellsCount:table列数,postRowsCount:要增加行的位置后面已有的行数
with(window.event)
{
var e=srcElement //e=input
var r=e.parentElement.parentElement //r=tr
var t=r.parentElement.parentElement //t=table
//alert(r.parentElement.tagName)
if(keyCode==68 && ctrlKey && t.rows.length>rowsCount)
{
t.deleteRow(r.rowIndex);//删除行
document.focus();
return false;
}
if(keyCode!=13||e.parentElement.cellIndex!=cellsCount-1)
return true;//e.parentElement=td
//if(t.rows.length>r.rowIndex+1)return true;
var n=t.insertRow(t.rows.length-postRowsCount);
for(i=0;i<r.cells.length;i++)
{
var c=n.insertCell();
c.innerHTML=r.cells(i).innerHTML;
c.children[0].value="";
}
}
}
</script>
<body bgcolor="#FFFFFF" text="#000000" onkeydown="if(event.keyCode==13 && event.srcElement.tagName!='TEXTAREA') {event.keyCode=9;}">
<table width="100%" border="1">
<tr>
<td><div align="center">科研工作项目</div></td>
<td><div align="center">预期目标</div></td>
<td><div align="center">进度</div></td>
<td><div align="center">工作者</div></td>
</tr>
<tr>
<td><INPUT name=ItemSub size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=ItemObject size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=ItemSche size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=Workman size=10 onkeydown="alterRow(2,4,0)"></td>
</tr>
</table>
说明:如需增加一行,请在最后一项输入完毕后敲回车即可;如果要删除一行,请先将光标移至该行的某一输入框中,然后再按Crtl+D即可。
</body>
function alterRow(rowsCount,cellsCount,postRowsCount)//增加或删除行
{//rowsCount:table行数,cellsCount:table列数,postRowsCount:要增加行的位置后面已有的行数
with(window.event)
{
var e=srcElement //e=input
var r=e.parentElement.parentElement //r=tr
var t=r.parentElement.parentElement //t=table
//alert(r.parentElement.tagName)
if(keyCode==68 && ctrlKey && t.rows.length>rowsCount)
{
t.deleteRow(r.rowIndex);//删除行
document.focus();
return false;
}
if(keyCode!=13||e.parentElement.cellIndex!=cellsCount-1)
return true;//e.parentElement=td
//if(t.rows.length>r.rowIndex+1)return true;
var n=t.insertRow(t.rows.length-postRowsCount);
for(i=0;i<r.cells.length;i++)
{
var c=n.insertCell();
c.innerHTML=r.cells(i).innerHTML;
c.children[0].value="";
}
}
}
</script>
<body bgcolor="#FFFFFF" text="#000000" onkeydown="if(event.keyCode==13 && event.srcElement.tagName!='TEXTAREA') {event.keyCode=9;}">
<table width="100%" border="1">
<tr>
<td><div align="center">科研工作项目</div></td>
<td><div align="center">预期目标</div></td>
<td><div align="center">进度</div></td>
<td><div align="center">工作者</div></td>
</tr>
<tr>
<td><INPUT name=ItemSub size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=ItemObject size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=ItemSche size=10 onkeydown="alterRow(2,4,0)"></td>
<td><INPUT name=Workman size=10 onkeydown="alterRow(2,4,0)"></td>
</tr>
</table>
说明:如需增加一行,请在最后一项输入完毕后敲回车即可;如果要删除一行,请先将光标移至该行的某一输入框中,然后再按Crtl+D即可。
</body>
function deleteLine()
{
for (var i=tbody1.children.length-1; i>=0 ; i-- )
if (tbody1.children[i].firstChild.firstChild.checked)
tbody1.deleteRow(i);
}
function addLine()
{
elm = thead1.lastChild.cloneNode(true)
elm.style.display="block";
tbody1.insertBefore(elm);
}
</script>
<table width="100%" border="1">
<thead id=thead1>
<tr>
<td><div align="center">选中</div></td>
<td><div align="center">科研工作项目</div></td>
<td><div align="center">预期目标</div></td>
<td><div align="center">进度</div></td>
<td><div align="center">工作者</div></td>
</tr>
<tr style="display:none">
<td><input type=checkbox id=checkLine></td>
<td><INPUT name=ItemSub size=10></td>
<td><INPUT name=ItemObject size=10></td>
<td><INPUT name=ItemSche size=10></td>
<td><INPUT name=Workman size=10></td>
</tr>
</thead>
<tbody id=tbody1>
<tr>
<td><input type=checkbox id=checkLine></td>
<td><INPUT name=ItemSub size=10></td>
<td><INPUT name=ItemObject size=10></td>
<td><INPUT name=ItemSche size=10></td>
<td><INPUT name=Workman size=10></td>
</tr>
</tbody>
</table>
<input type=button onclick="deleteLine()" value=删除>
<input type=button onclick="addLine()" value=添加>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>明细ID</title>
</head><body>
<form name="frm" method=post ><div width=100% id=thedetailtableDIV>
<table align="center" bordercolor=cccccc border=1 onkeydown='keyDownControl(event.srcElement)' >
<tr><td colspan=100 align=right>
<input type="button" value="增加" class="bottom" onclick="addDetailProcess();">
<input type="button" value="拆分" class="bottom" onclick="copyDetailProcess();">
<input type="button" value="删除" class="bottom" onclick="delDetailProcess();">
<input type="button" value="批改" class="bottom" onclick="modifyDetailProcess();">
<input type="button" value="批选" class="bottom" onclick="selectDetailProcess(document.all('pixianTrueOrFalse').checked);"><input type="checkbox" name="pixianTrueOrFalse" checked>
<input type="button" value="完成" class="bottom" onclick="document.frm.submit();">
</td>
</tr>
<tbody id="tbDetailPrepare">
<tr>
<td ><input type="checkbox" name="record_select" ></td>
<td ><input type="text" name="detail_id" value='' ></td>
<td ><input type="text" name="detail_name" value='' ></td>
</tr>
</tbody>
<tr bgcolor=eeeeee id="trDetailTitles">
<td ><input type=checkbox onclick="selectallcheckbox(this)"></td>
<td >明细ID<input type=checkbox name="colbox_detail_id"></td>
<td >明细NAME<input type=checkbox name="colbox_detail_name"></td>
</tr>
<tbody id="tbDetailUsed" >
<tr>
<td ><input type="checkbox" name="record_select" ></td>
<td ><input type="text" name="detail_id" value='' ></td>
<td ><input type="text" name="detail_name" value='' ></td>
</tr> <tr height=0 ><td colspan=100 height=0 > 合计</td></tr>
</tbody> </table>
</div></form><input name="theHistoryRecord" type=hidden >
</body></html><script language=javascript> window.onload = historyOnemore;
window.onbeforeunload = fixHistory; function fixHistory() //记住历史
{
document.all("theHistoryRecord").value=document.all("thedetailtableDIV").innerHTML.replace(/\n/g,"");
} function historyOnemore() //恢复历史
{
if (document.all("theHistoryRecord").value!="")
{document.all("thedetailtableDIV").innerHTML=document.all("theHistoryRecord").value;
}
} function selectallcheckbox(obj) //全选或全不选
{
var tureorfalse=obj.checked;
var theDetail=tbDetailUsed.rows;
for(var i=0;i<theDetail.length-1;i++)
{
theDetail[i].all("record_select").checked=tureorfalse;
}
}
function addDetailProcess(afterRowIndex) //增加明细
{
var alltbDetailUsed= document.all("tbDetailUsed").rows;
var theFirstSelectedDetail;
if (afterRowIndex==null)
{
for(var i=0;i<alltbDetailUsed.length-1;i++)
{
if (alltbDetailUsed[i].all("record_select").checked==true) {theFirstSelectedDetail=i;break;}
}
if (theFirstSelectedDetail==null) {theFirstSelectedDetail=alltbDetailUsed.length-2;}
}
else theFirstSelectedDetail=afterRowIndex;
var newRow = document.all("tbDetailPrepare").rows[0].cloneNode(true);
var desRow = alltbDetailUsed[theFirstSelectedDetail+1];
desRow.parentElement.insertBefore(newRow,desRow ); }
function copyDetailProcess() //拆分明细
{
var alltbDetailUsed= document.all("tbDetailUsed").rows;
var theFirstSelectedDetail;
for(var i=0;i<alltbDetailUsed.length-1;i++)
{
if (alltbDetailUsed[i].all("record_select").checked==true) {theFirstSelectedDetail=i;break;}
}
if (theFirstSelectedDetail==null) {alert("拆分操作之前请先选择一笔明细!");return false;}
var newRow = alltbDetailUsed[theFirstSelectedDetail].cloneNode(true);
var desRow = alltbDetailUsed[theFirstSelectedDetail+1];
desRow.parentElement.insertBefore(newRow,desRow ); }
function delDetailProcess() //删除明细
{
var alltbDetailUsed= document.all("tbDetailUsed").rows;
if (confirm("确定选择正确并且要将这些明细删除")==false) return false;
for(var i=0;i<alltbDetailUsed.length-1;i++)
{
if (alltbDetailUsed[i].all("record_select").checked==true)
{
document.all("tbDetailUsed").deleteRow(i);
i=i-1;
}
}
} function modifyDetailProcess()
{
var i=0;
var j=0;
var theSelectedColName=new Array();
var theSelectedColValue=new Array();
var theColboxs=document.all("trDetailTitles").getElementsByTagName("input");
var theDetailPrepareTr=document.all("tbDetailPrepare").rows[0];
var the
for (j=1;j<theColboxs.length;j++)
{
if ((theColboxs[j].name.substr(0,7)=="colbox_")&&theColboxs[j].checked)
{
theSelectedColName[theSelectedColName.length]=theColboxs[j].name.substr(7,100);
theSelectedColValue[theSelectedColValue.length]=theDetailPrepareTr.all(theColboxs[j].name.substr(7,100)).value;
}
}
if (theSelectedColName.length==0) {alert("您没有选择需要修改的列!");return false;}
if (!confirm("真的要批量修改?")) return false;
var alltbDetailUsed= document.all("tbDetailUsed").rows;
for(var i=0;i<alltbDetailUsed.length-1;i++)
{
if (alltbDetailUsed[i].all("record_select").checked)
{
for (j=0;j<theSelectedColName.length;j++)
{
alltbDetailUsed[i].all(theSelectedColName[j]).focus();
alltbDetailUsed[i].all(theSelectedColName[j]).value=theSelectedColValue[j];
alltbDetailUsed[i].all(theSelectedColName[j]).select();
}
}
}
}
function selectDetailProcess(trueOrFalse) //按条件批量选中
{
if (trueOrFalse!=false) trueOrFalse=true;
var i=0;
var j=0;
var theSelectedColName=new Array();
var theSelectedColValue=new Array();
var theColboxs=document.all("trDetailTitles").getElementsByTagName("input");
var theDetailPrepareTr=document.all("tbDetailPrepare").rows[0];
var the
for (j=1;j<theColboxs.length;j++)
{
if ((theColboxs[j].name.substr(0,7)=="colbox_")&&theColboxs[j].checked)
{
theSelectedColName[theSelectedColName.length]=theColboxs[j].name.substr(7,100);
theSelectedColValue[theSelectedColValue.length]=theDetailPrepareTr.all(theColboxs[j].name.substr(7,100)).value;
}
}
var alltbDetailUsed= document.all("tbDetailUsed").rows;
for(var i=0;i<alltbDetailUsed.length-1;i++)
{
var theTrWillBeSelected=true;
for (j=0;j<theSelectedColName.length;j++)
{
if (alltbDetailUsed[i].all(theSelectedColName[j]).value!=theSelectedColValue[j])
{
theTrWillBeSelected=false;break;
}
}
if (theTrWillBeSelected) alltbDetailUsed[i].all("record_select").checked=trueOrFalse;
}
}
function keyDownControl(obj) //用于控制明细里的上下键。只控制input
{
if(obj.tagName!="INPUT"||obj.name=="") return true;
k=event.keyCode;
if(!(k==38||k==40)) return true;
var theSamenameInputs=document.all(obj.name);
var i=0;
if (theSamenameInputs.length>1)
{
for (i=0;i<theSamenameInputs.length;i++)
{ if (theSamenameInputs[i]==obj) break; }
}
if((i==theSamenameInputs.length-1)&&(k==40))
{
addDetailProcess(theSamenameInputs.length-2);
}
if((i>0)&&(k==38))
{
theSamenameInputs[i-1].select();
theSamenameInputs[i-1].focus();
event.returnValue=false;
return false;
}
if((i<theSamenameInputs.length-1)&&(k==40))
{
theSamenameInputs[i+1].select();
theSamenameInputs[i+1].focus();
event.returnValue=false;
return true;
}
}
</script>
<table width="100%" border="1" id=otable>
<tr>
<td><div align="center">科研工作项目</div></td>
<td><div align="center">预期目标</div></td>
<td><div align="center">进度</div></td>
<td><div align="center">工作者</div></td>
<td></td>
</tr>
<tr>
<td><INPUT name=ItemSub size=10></td>
<td><INPUT name=ItemObject size=10></td>
<td><INPUT name=ItemSche size=10></td>
<td><INPUT name=Workman size=10></td>
</tr>
<input type=button name=b1 value=del onclick=del()>
</table>
<script language=javascript>
<!--
function del()
{
otable.deleteRow(1);
}
-->
</script>
<tr>
<td><div align="center">科研工作项目</div></td>
<td><div align="center">预期目标</div></td>
<td><div align="center">进度</div></td>
<td><div align="center">工作者</div></td>
<td></td>
</tr>
<tr>
<td><INPUT name=ItemSub size=10></td>
<td><INPUT name=ItemObject size=10></td>
<td><INPUT name=ItemSche size=10></td>
<td><INPUT name=Workman size=10></td>
</tr>
</table>
<input type=button name=b1 value=del onclick=del()>
<input type=button name=b1 value=add onclick=add()><script language=javascript>
<!--
function del()
{
otable.deleteRow(1);
}function add()
{ var madd=otable.rows.length;
var orow1=otable.insertRow(otable.rows.length);
//insert one row.
var arows=otable.rows;
//retrieve the rows collection for the table
var acells=orow1.cells;
//retrieve the cells collection for the new row
var ocell1_1=arows(orow1.rowIndex).insertCell(acells.length);
var ocell1_2=arows(orow1.rowIndex).insertCell(acells.length);
var ocell1_3=arows(orow1.rowIndex).insertCell(acells.length);
var ocell1_4=arows(orow1.rowIndex).insertCell(acells.length);
ocell1_1.innerHTML="<INPUT name=ItemSub size=10>";
ocell1_2.innerHTML="<INPUT name=Itemobject size=10>";
ocell1_3.innerHTML="<INPUT name=ItemShce size=10>";
ocell1_4.innerHTML="<INPUT name=workman size=10>";
}-->
</script>
已调试通过