基于JQuery制作可编辑的表格特效


Posted in Javascript onDecember 23, 2014

最近做了个项目,其中项目要求:点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按Esc可取消编辑

2个小伙伴给出了2中解决方案,大家来看看哪种更合适呢?

第一种单击表格可以编辑的方法

//相当于在页面中的 body标签加上onload事件

$(function() {

    //找到所有的td节点

    var tds = $("td");

    //给所有的td添加点击事件

    tds.click(function() {

        //获得当前点击的对象

        var td = $(this);

        //取出当前td的文本内容保存起来

        var oldText = td.text();

        //建立一个文本框,设置文本框的值为保存的值

        var input = $("<input type='text' value='" + oldText + "'/>");

        //将当前td对象内容设置为input

        td.html(input);

        //设置文本框的点击事件失效

        input.click(function() {

            return false;

        });

        //设置文本框的样式

        input.css("border-width", "0");

        input.css("font-size", "16px");

        input.css("text-align", "center");

        //设置文本框宽度等于td的宽度

        input.width(td.width());

        //当文本框得到焦点时触发全选事件

        input.trigger("focus").trigger("select");

        //当文本框失去焦点时重新变为文本

        input.blur(function() {

            var input_blur = $(this);

            //保存当前文本框的内容

            var newText = input_blur.val();

            td.html(newText);

        });

        //响应键盘事件

        input.keyup(function(event) {

            // 获取键值

            var keyEvent = event || window.event;

            var key = keyEvent.keyCode;

            //获得当前对象

            var input_blur = $(this);

            switch (key)

                    {

                case 13://按下回车键,保存当前文本框的内容

                    var newText = input_blur.val();

                    td.html(newText);

                    break;

                case 27://按下 esc键,取消修改,把文本框变成文本

                    td.html(oldText);

                    break;

            }

        });

    });

});

第二种单击表格可以编辑的方法

$(document).ready(function(){

    var tds = $("td");

    tds.click(tdClick);

});

function tdClick(){

    var tdnode = $(this);

    var tdtext = tdnode.text();

    tdnode.html("");

    var input = $("<input>");

    input.val(tdtext); //    input.attr("value",tdtext);

    input.keyup(function(event){

        var myEvent = event || window.event;

        var keyCode = myEvent.keyCode;

        if(keyCode == 13){

            var inputnode = $(this);

            var inputtext = inputnode.val();

            var td = inputnode.parent();

            td.html(inputtext);

            td.click(tdClick);

        }

        if(keyCode == 27){  //判断是否按下ESC键

            $(this).parent().html(tdtext);

            $(this).parent().click(tdClick);

        }

    });

    tdnode.append(input);

    tdnode.children("input").trigger("select");

    //输入框失去焦点,所执行的方法

    input.blur(function(){

        tdnode.html($(this).val());

        tdnode.click(tdClick);

    });

    tdnode.unbind("click");

}

想比较来说,个人更喜欢第二种一些,小伙伴们是什么意见呢,欢迎留言给我。

Javascript 相关文章推荐
JavaScript 中的事件教程
Apr 05 Javascript
jquery 分页控件实现代码
Nov 30 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
删除节点的jquery代码
Jan 13 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
全屏滚动插件fullPage.js使用实例解析
Oct 21 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
带你快速理解javascript中的事件模型
Aug 14 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
jquery将json转为数据字典的实例代码
Oct 11 jQuery
JavaScript调试工具汇总
Dec 23 #Javascript
jQuery制作简洁的多级联动Select下拉框
Dec 23 #Javascript
jQuery元素选择器用法实例
Dec 23 #Javascript
jquery制作漂亮的弹出层提示消息特效
Dec 23 #Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 #Javascript
jQuery分组选择器用法实例
Dec 23 #Javascript
常用的JS验证和函数汇总
Dec 23 #Javascript
You might like
php批量上传的实现代码
2013/06/09 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
Python爬取APP下载链接的实现方法
2016/09/30 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
django删除表重建的实现方法
2019/08/28 Python
python 命令行传入参数实现解析
2019/08/30 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python zip()函数的使用示例
2020/09/23 Python
python openCV自制绘画板
2020/10/27 Python
python3访问字典里的值实例方法
2020/11/18 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
建设投标担保书
2014/05/13 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
中学生检讨书1000字
2014/10/28 职场文书
辞职申请书范本
2019/05/20 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers
使用Ajax实现进度条的绘制
2022/04/07 Javascript
Nginx的gzip相关介绍
2022/05/11 Servers