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

 更新时间:2012年12月11日 09:34:41   作者:  
单击单元格选中,选中过程中使用方向键更换选中的单元格,选中过程中按回车键或者直接双击单元格进入可编辑状态,单元格失去焦点时保存修改的内容
功能
单击单元格选中,选中过程中使用方向键更换选中的单元格,选中过程中按回车键或者直接双击单元格进入可编辑状态,单元格失去焦点时保存修改的内容。

主要实现思路
选中,移动选中区域等都是依靠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

相关文章

  • JQuery实现动态表格点击按钮表格增加一行

    JQuery实现动态表格点击按钮表格增加一行

    动态表格,功能为点击添加按钮,表格增加一行并给其name属性赋予的值,点击删除,自动删除这一行,具体实现如下
    2014-08-08
  • jquery实现左右无缝轮播图

    jquery实现左右无缝轮播图

    这篇文章主要为大家详细介绍了基于jquery实现左右无缝轮播图的具体代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • jQuery实现的网格线绘制方法

    jQuery实现的网格线绘制方法

    这篇文章主要介绍了jQuery实现的网格线绘制方法,涉及jQuery针对页面元素的获取及样式动态操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • jQuery中ajax的get()方法用法实例

    jQuery中ajax的get()方法用法实例

    这篇文章主要介绍了jQuery中ajax的get()方法用法,以实例形式较为详细的分析了get()方法的功能、定义及具体使用技巧,需要的朋友可以参考下
    2014-12-12
  • 通过jquery的ajax请求本地的json文件方法

    通过jquery的ajax请求本地的json文件方法

    今天小编就为大家分享一篇通过jquery的ajax请求本地的json文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 基于jQuery实现滚动刷新效果

    基于jQuery实现滚动刷新效果

    这篇文章主要为大家详细介绍了基于jQuery实现滚动刷新效果,使用Ajax获取后台数据更新前端页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • jQuery的css() 方法使用指南

    jQuery的css() 方法使用指南

    在jquery中我们要动态的修改css属性我们只要使用css()方法就可以实现了,下面我来给大家详细介绍介绍。
    2015-05-05
  • jqgrid 简单学习笔记

    jqgrid 简单学习笔记

    JqGrid是JQuery的表格插件,功能非常强大,基本上能想到,它都能实现。下面是一个例子,希望能通过这个示例,能让你了解下JqGrid。
    2011-05-05
  • jQuery技巧之让任何组件都支持类似DOM的事件管理

    jQuery技巧之让任何组件都支持类似DOM的事件管理

    这篇文章主要介绍了jQuery技巧之让任何组件都支持类似DOM的事件管理 的相关资料,需要的朋友可以参考下
    2016-04-04
  • 浅析jQuery的链式调用之each函数

    浅析jQuery的链式调用之each函数

    如果对于jquery的$()包装器函数还不是很清楚,请先参阅我的上一篇日志:浅析jQuery的链式调用
    2010-12-12

最新评论