想做到这么一种效果
在一行div里面输入数据,最后一列按回车后保存,新建一行,焦点移到新的一行的第一格。
自己做了一下,发现insertRows后,不能读取新建的行...焦点没有动过...说明它还在上一行的最后一列,
即使event.keyCode=9,但由于没有下一个可用焦点...没有动...还停留在原来哪一格...下面是第一行的代码
<td align='center' height='35px'></td>
<td align='center'>
<div contentEditable='true' onkeydown='if(event.keyCode==13)event.keyCode=9' id='div1"+row+"'></div>
</td>
<td align='center'>
<div contentEditable='true' onkeydown='if(event.keyCode==13)addNewMsg()' onKeyPress='if (event.keyCode!=46 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' style='ime-mode:disabled' id='div2"+row+"'>
</div></td>点击回车事件//学分分值框的判断
function addNewMsg(){
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
if(document.getElementById("div1"+row).innerHTML==""){
alert("学分类别名称不能为空!");
event.returnValue=false;
document.getElementById("div1"+row).focus();
}
else if(document.getElementById("div2"+row).innerHTML==""){
alert("学分分值不能为空!");
event.returnValue=false;
document.getElementById("div2"+row).focus();
}else{
addXFMC();
event.keyCode=9;
}
}
//添加学分类别名称
function addXFMC(){
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
document.getElementById("ShowId").value="3";
var XMLBdm = document.getElementById("XMLB").value;
var XFLYLB = document.getElementById("XFLYLB").options[document.getElementById("XFLYLB").selectedIndex].text;
var XFLYMC = document.getElementById("div1"+row).innerHTML;
var XFFZ = document.getElementById("div2"+row).innerHTML;
createRequest("xueFenLaiYuanGuanLi.do?method=addXFLYmc&XFLYLB="+XFLYLB+"&XMLBdm="+XMLBdm+"&XFLYMC="+XFLYMC+"&XFFZ="+XFFZ);
}
//添加新的一行
function insertRows(){
var obj = document.getElementById("XFLYMC");//获取table对象 var size = obj.rows.length;
var oRow= obj.insertRow(size);
//alert(oRow);
oRow.align="center";
oRow.height=35;
for(var i=0;i<3;i=i+1){
obj.rows[size].insertCell(i);
}
var row = Number(size+1);
obj.rows[size-1].cells[0].innerHTML="<div>作废</div>";
obj.rows[size].cells[1].innerHTML="<div><div contentEditable='true' onkeydown='if(event.keyCode==13)event.keyCode=9' id='div1"+row+"'></div></div>";
obj.rows[size].cells[2].innerHTML="<div contentEditable='true' onkeydown='if(event.keyCode==13)addNewMsg()'"+
"onKeyPress='if (event.keyCode!=46 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' style='ime-mode:disabled' id='div2"+row+"'>"+
"</div>";
}
大概就是这样子了...帮忙看看谢谢
在一行div里面输入数据,最后一列按回车后保存,新建一行,焦点移到新的一行的第一格。
自己做了一下,发现insertRows后,不能读取新建的行...焦点没有动过...说明它还在上一行的最后一列,
即使event.keyCode=9,但由于没有下一个可用焦点...没有动...还停留在原来哪一格...下面是第一行的代码
<td align='center' height='35px'></td>
<td align='center'>
<div contentEditable='true' onkeydown='if(event.keyCode==13)event.keyCode=9' id='div1"+row+"'></div>
</td>
<td align='center'>
<div contentEditable='true' onkeydown='if(event.keyCode==13)addNewMsg()' onKeyPress='if (event.keyCode!=46 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' style='ime-mode:disabled' id='div2"+row+"'>
</div></td>点击回车事件//学分分值框的判断
function addNewMsg(){
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
if(document.getElementById("div1"+row).innerHTML==""){
alert("学分类别名称不能为空!");
event.returnValue=false;
document.getElementById("div1"+row).focus();
}
else if(document.getElementById("div2"+row).innerHTML==""){
alert("学分分值不能为空!");
event.returnValue=false;
document.getElementById("div2"+row).focus();
}else{
addXFMC();
event.keyCode=9;
}
}
//添加学分类别名称
function addXFMC(){
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
document.getElementById("ShowId").value="3";
var XMLBdm = document.getElementById("XMLB").value;
var XFLYLB = document.getElementById("XFLYLB").options[document.getElementById("XFLYLB").selectedIndex].text;
var XFLYMC = document.getElementById("div1"+row).innerHTML;
var XFFZ = document.getElementById("div2"+row).innerHTML;
createRequest("xueFenLaiYuanGuanLi.do?method=addXFLYmc&XFLYLB="+XFLYLB+"&XMLBdm="+XMLBdm+"&XFLYMC="+XFLYMC+"&XFFZ="+XFFZ);
}
//添加新的一行
function insertRows(){
var obj = document.getElementById("XFLYMC");//获取table对象 var size = obj.rows.length;
var oRow= obj.insertRow(size);
//alert(oRow);
oRow.align="center";
oRow.height=35;
for(var i=0;i<3;i=i+1){
obj.rows[size].insertCell(i);
}
var row = Number(size+1);
obj.rows[size-1].cells[0].innerHTML="<div>作废</div>";
obj.rows[size].cells[1].innerHTML="<div><div contentEditable='true' onkeydown='if(event.keyCode==13)event.keyCode=9' id='div1"+row+"'></div></div>";
obj.rows[size].cells[2].innerHTML="<div contentEditable='true' onkeydown='if(event.keyCode==13)addNewMsg()'"+
"onKeyPress='if (event.keyCode!=46 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' style='ime-mode:disabled' id='div2"+row+"'>"+
"</div>";
}
大概就是这样子了...帮忙看看谢谢
keycode 9 = Tab Tab 这是换行吗?
他的意思大概是恩keyCode 9 转换为tab 然后咱们默认tab的功能不是将焦点移到下一个栏上木。。由于LZ后来的表单是动态生成的 LZ只是想把该条记录添加完恩TAB键默认到下一个表单(后生成的)里去吧不一定非得这样 监听keyCode 键是必要的 不过移动焦点不用非得用tab 你可以通过JS获得这个页面所有的这个元素的数组 再获得当前焦点所处的这个数组的位置 然后把该焦点用JS移动到该位置 + 1的地方不就好了木?
如果我要获得所有这个元素的数组的的话,我应该根据什么来获取呢?是不是每个元素的id都设成一样呢?
通常我个人建议用 class
根据getElementsByName也行 可是我让你用class不是说有根据class获得元素集合的方法啊。。加判断不中么?
看看这个 //在添加一行前显示table的总行数
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
alert(row);
addXFMC(); //执行添加一行的方法
//在添加一行后显示table的总行数
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
alert(row);//添加一行的方法
function addXFMC(){
var table=document.getElementById("XFLYMC");
var row=table.rows.length;
document.getElementById("ShowId").value="3";
var XMLBdm = document.getElementById("XMLB").value;
var XFLYLB = document.getElementById("XFLYLB").options[document.getElementById("XFLYLB").selectedIndex].text;
var XFLYMC = document.getElementById("div1"+row).innerHTML;
var XFFZ = document.getElementById("div2"+row).innerHTML;
createRequest("xueFenLaiYuanGuanLi.do?method=addXFLYmc&XFLYLB="+XFLYLB+"&XMLBdm="+XMLBdm+"&XFLYMC="+XFLYMC+"&XFFZ="+XFFZ);
}//插入一行
function insertRows(){
var obj = document.getElementById("XFLYMC");//获取table对象 var size = obj.rows.length;
var oRow= obj.insertRow(size);
//alert(oRow);
oRow.align="center";
oRow.height=35;
for(var i=0;i<3;i=i+1){
obj.rows[size].insertCell(i);
}
var row = Number(size+1);
obj.rows[size-1].cells[0].innerHTML="<div>作废</div>";
obj.rows[size].cells[1].innerHTML="<div><div contentEditable='true' onkeydown='if(event.keyCode==13)event.keyCode=9' id='div1"+row+"' class='div'></div></div>";
obj.rows[size].cells[2].innerHTML="<div contentEditable='true' onkeydown='if(event.keyCode==13)addNewMsg()'"+
"onKeyPress='if (event.keyCode!=46 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false' style='ime-mode:disabled' id='div2"+row+"' class='div'>"+
"</div>";
}
问题是它两次打印行数都是一样的.....但是它又的确又添加到新的一行.....彻底无语了....