jQuery(非HTML5)可编辑表格实现代码


Posted in Javascript onDecember 11, 2012

功能
单击单元格选中,选中过程中使用方向键更换选中的单元格,选中过程中按回车键或者直接双击单元格进入可编辑状态,单元格失去焦点时保存修改的内容。

主要实现思路
选中,移动选中区域等都是依靠jQuery强大的API进行实现的。而可编辑的单元格实际上是在选中单元格时,在单元格上面添加个input输入域,动态的更新数据

源代码
HTML代码:

<table class="editableTable"> 
<thead> 
<tr> 
<th>Item1</th> 
<th>Item2</th> 
<th>Item3</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td class="editable simpleInput">arthinking</td> 
<td class="editable simpleInput">Jason</td> 
<td class="editable simpleInput">itzhai</td> 
</tr> 
<tr> 
<td class="editable simpleInput">arthinking</td> 
<td class="editable simpleInput">Jason</td> 
<td class="editable simpleInput">itzhai</td> 
</tr> 
<tr> 
<td class="editable simpleInput">arthinking</td> 
<td class="editable simpleInput">Jason</td> 
<td class="editable simpleInput">itzhai</td> 
</tr> 
</tbody> 
</table>

CSS代码:
body{ 
text-shadow:#FFFFFF 1px 1px 1px; 
} 
.editableTable{ 
width: 220px; 
padding: 10px; 
background-color: #DDEEF6; 
border:1px solid #DDEEF6; 
-webkit-border-radius: 6px; 
-moz-border-radius: 6px; 
} 
.editableTable thead{ 
background:#FFFFCC; 
} 
td{ 
background:#66CCFF; 
cursor:pointer; 
} 
.selectCell{ 
background:#6699FF; 
}

JS代码:
var EdTable = function(){ 
// 给单元格绑定事件 
function initBindGridEvent(){ 
$("td.editable").unbind(); 
// 添加单元格点击事件 
addGridClickEvent(); 
// 添加单元格双击事件 
addGridDbClickEvent(); 
// 添加键盘事件 
addGridKeyPressEvent(); 
} 
// 给单元格添加单击事件 
function addGridClickEvent(){ 
$("td.simpleInput").bind("click",function(){ 
$('.simpleInput').each(function(){ 
$(this).removeClass("selectCell"); 
}); 
// 给选中的元素添加选中样式 
$(this).addClass("selectCell"); 
}); 
} 
//给单元格添加双击事件 
function addGridDbClickEvent(){ 
$("td.simpleInput").bind("dblclick",function(){ 
$('.simpleInput').each(function(){ 
$(this).removeClass("selectCell"); 
}); 
var val=$(this).html(); 
var width = $(this).css("width"); 
var height = $(this).css("height"); 
$(this).html("<input type='text' onblur='EdTable.saveEdit(this)' style='width:"+ width +";height:"+ height +"; padding:0px; margin:0px;' value='"+val+"' >"); 
$(this).children("input").select(); 
}); 
} 
// 给单元格添加键盘事件 
function addGridKeyPressEvent(){ 
$(document).keyup(function(event){ 
if(event.keyCode == 37){ 
// 左箭头 
var selectCell = $(".selectCell").prev()[0]; 
if(selectCell != undefined){ 
$(".selectCell").removeClass("selectCell").prev().addClass("selectCell"); 
} 
} else if(event.keyCode == 38){ 
// 上箭头 
var col = $(".selectCell").prevAll().length; 
var topCell = $(".selectCell").parent("tr").prev().children()[col]; 
if(topCell != undefined){ 
$(".selectCell").removeClass("selectCell"); 
$(topCell).addClass("selectCell"); 
} 
} else if(event.keyCode == 39){ 
// 右箭头 
var selectCell = $(".selectCell").next()[0]; 
if(selectCell != undefined){ 
$(".selectCell").removeClass("selectCell").next().addClass("selectCell"); 
} 
} else if(event.keyCode == 40){ 
// 下箭头 
var col = $(".selectCell").prevAll().length; 
var topCell = $(".selectCell").parent("tr").next().children()[col]; 
if(topCell != undefined){ 
$(".selectCell").removeClass("selectCell"); 
$(topCell).addClass("selectCell"); 
} 
} else if(event.keyCode == 13){ 
// 回车键 
var selectCell = $(".selectCell")[0]; 
if(selectCell != undefined){ 
$(selectCell).dblclick(); 
} 
} 
}); 
} 
// 单元格失去焦点后保存表格信息 
function saveEdit(gridCell){ 
var pnt=$(gridCell).parent(); 
$(pnt).html($(gridCell).attr("value")); 
$(gridCell).remove(); 
} 
return{ 
initBindGridEvent : initBindGridEvent, 
saveEdit : saveEdit 
} 
}();

源代码下载
EditableTable.rar
Javascript 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
分享别人写的一个小型js框架
Aug 13 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
微信小程序实现滑动删除效果
May 19 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
vue input实现点击按钮文字增删功能示例
Jan 29 Javascript
js实现随机8位验证码
Jul 24 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
js实现翻牌小游戏
Jul 31 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 #Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 #Javascript
ajax不执行success回调而是执行了error回调
Dec 10 #Javascript
解决js正则匹配换行问题实现代码
Dec 10 #Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 #Javascript
怎样在JavaScript里写一个swing把数据插入数据库
Dec 10 #Javascript
js里怎么取select标签里的值并修改
Dec 10 #Javascript
You might like
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
php基础知识:控制结构
2006/12/13 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
python检查URL是否正常访问的小技巧
2017/02/25 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
详解python分布式进程
2018/10/08 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python插件机制实现详解
2020/05/04 Python
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
自主招生自荐信指南
2014/02/04 职场文书
《老山界》教学反思
2014/04/08 职场文书
婚前协议书范本
2014/10/27 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
《所见》教学反思
2016/02/23 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android