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 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 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)) { if(document.all("autoAddDetailCheckbox")!=null&&document.all("autoAddDetailCheckbox").checked) 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 false; } }</script>
.saveHistory {behavior:url(#default#savehistory);}
</STYLE>
<table CLASS="saveHistory" STYLE="behavior:url(#default#savehistory)">
我对这种技术还是比较谨慎。
如果是给自己用还好,要是给互联网用户,兼容性恐怕
那你用什么来解决碰到的这种问题!!
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
TD,INPUT{ font-size:9pt; }
</style>
<title>明细ID</title>
</head><body>
<form name="frm" method=post ><table align="center" bordercolor=cccccc border=1 width=100% >
<tr> <td align=right>
<input type="button" value="增加" class="bottom" onclick="addDetailProcess();">
<input type="button" value="删除" class="bottom" onclick="delDetailProcess();">
<input type="button" value="完成" class="bottom" onclick="document.frm.submit();">
</td>
</tr>
</table>
<div width=100% id=thedetailtableDIV>
<table align="center" bordercolor=cccccc border=1 onkeydown='keyDownControl(event.srcElement)' width=100% >
<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</td>
<td >明细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 value="">
</body></html><script language=javascript> window.onload = historyOncemore;
window.onbeforeunload = fixHistory; function fixHistory() //记住历史
{
document.all("theHistoryRecord").value=document.all("thedetailtableDIV").innerHTML.replace(/\n/g,"");
} function historyOncemore() //恢复历史
{
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 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 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))
{
if(document.all("autoAddDetailCheckbox")!=null&&document.all("autoAddDetailCheckbox").checked)
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 false;
}
}</script>
<form action="test.asp" traget="_blank"></form>
这样不是很好吗?