基于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 相关文章推荐
js判断变量是否空值的代码
Oct 26 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
Aug 04 Javascript
jquery ajax 局部无刷新更新数据的实现案例
Feb 08 Javascript
Android中的jQuery:AQuery简介
May 06 Javascript
JSON与XML优缺点对比分析
Jul 17 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
VUE多层路由嵌套实现代码
May 15 Javascript
js设计模式之单例模式原理与用法详解
Aug 15 Javascript
React+EggJs实现断点续传的示例代码
Jul 07 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
js导出txt示例代码
2014/01/14 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
Python函数式编程指南(二):从函数开始
2015/06/24 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
美术课外活动总结
2014/07/08 职场文书
公司委托书格式范文
2014/10/09 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
一文搞懂Redis中String数据类型
2022/04/03 Redis