可编辑表格

如果在填表单时移到下一个项都需要鼠标去点的话,那也太折腾老百姓了,因此少让用户去点鼠标,可以敲下回车键盘键就能代替鼠标去点,那就算是省事又省心了 。

    下面简单的说下如何做可编辑的表格。主要使用了 XML DOM- Element 对象来完成以下操作。可参考 http://www.w3school.com.cn/xmldom/dom_element.asp

以下是主要的代码:
  1. var TempValue = "";     //全局变量临时保存当前编辑单元格的值
  2. var CurElement = null//当前节点   
  3.   
  4. //当前编辑单元格
  5. var InputControl = '<input border="0" style="width:100;height:20; overflow:hidden;" type="text" onblur="mouseBlur(event.srcElement)" onkeydown="saveValue(event.srcElement)"/>';   
  6.  
  7. //捕获当前Element并判断是否为TD标签
  8. function editTD(){   
  9.    if(CurElement.tagName == "TD"){   
  10.       var srcE=event.srcElement;   
  11.       var mValue = srcE.innerHTML;   
  12.       srcE.innerHTML =InputControl;   
  13.       srcE.childNodes[0].value = mValue;   
  14.       srcE.childNodes[0].focus();   
  15.       srcE.childNodes[0].select();   
  16.    }   
  17. }   
  18.   
  19. //保存编辑的值,回车移动到下一个TD  
  20. function saveValue(pElement){   
  21.    if(event.keyCode == 13){     
  22.       TempValue = pElement.value;//记录<td>值   
  23.       var Parent = pElement.parentNode;   
  24.       var p=null;   
  25.       pElement.parentNode.innerHTML=TempValue;   
  26.       var TempValue = "";   
  27.       if(Parent.nextSibling != null){   
  28.           p=Parent.nextSibling;   
  29.           TempValue = p.innerHTML;   
  30.           p.innerHTML = InputControl;   
  31.           p.childNodes[0].value = TempValue;   
  32.           p.childNodes[0].focus();   
  33.           p.childNodes[0].select();   
  34.      }   
  35.      else if(Parent.parentNode.nextSibling != null){   
  36.           p=Parent.parentNode.nextSibling.childNodes;   
  37.           if(p != null){   
  38.               TempValue = p[0].innerHTML;   
  39.               p[0].innerHTML = InputControl;   
  40.               p[0].childNodes[0].value = TempValue;   
  41.               p[0].childNodes[0].focus();   
  42.               p[0].childNodes[0].select();   
  43.           }   
  44.      }   
  45.      else if(Parent.nextSibling == null && Parent.parentNode.nextSibling == null){   
  46.           TempValue = Parent.innerHTML;   
  47.           Parent.innerHTML = InputControl;   
  48.           Parent.childNodes[0].value = TempValue;   
  49.           Parent.childNodes[0].focus();   
  50.           Parent.childNodes[0].select();   
  51.      }   
  52.    }   
  53. }   
  54.  
  55. //当前编辑单元格失去焦点时触发,更新td的值
  56. function mouseBlur(CurElement){   
  57.    TempValue = CurElement.value;   
  58.    CurElement.parentNode.innerHTML=TempValue;   
  59. }  

//表格内容
<table cellpadding="0" cellspacing="0" border="1" width="200" height="90" style=" table-layout:fixed" id="MainTable" onclick="CurElement=event.srcElement;editTD()">
<tr>
  <td>aa</td>
  <td>bb</td>
</tr>   
<tr>
  <td>cc</td>
  <td>dd</td>
</tr>
<tr>
<td>ee</td>
<td>ff</td>
</tr>
</table>

你可能感兴趣的:(表格)