基于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 相关文章推荐
DOM精简教程
Oct 03 Javascript
如何获取select下拉框的值(option没有及有value属性)
Nov 08 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
最佳的JavaScript错误处理实践
Jul 16 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
小程序如何写动态标签的实现方法
Feb 05 Javascript
详解JavaScript原型与原型链
Nov 16 Javascript
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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python 字符串大小写转换的简单实例
2017/01/21 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python多进程实现文件下载传输功能
2018/07/28 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
Python笔试面试题小结
2019/09/07 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
《池塘边的叫声》教学反思
2014/04/12 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
公证委托书标准格式
2014/09/11 职场文书
网站出售协议书范文
2014/10/10 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书