基于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的Date方法实现代码(prototype)
Nov 20 Javascript
javaScript实现浮点数转十六进制字符
Oct 29 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
jquery实现的仿天猫侧导航tab切换效果
Aug 24 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
javascript入门教程基础篇
Nov 16 Javascript
JavaScript 七大技巧(一)
Dec 13 Javascript
AngularJS入门教程中SQL实例详解
Jul 27 Javascript
EditPlus 正则表达式 实战(3)
Dec 15 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
ES6学习教程之Map的常用方法总结
Aug 03 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
javascript radio 联动效果
2009/03/04 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
python执行get提交的方法
2015/04/29 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python中static相关知识小结
2018/01/02 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
python多维数组切片方法
2018/04/13 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
Python远程方法调用实现过程解析
2020/07/28 Python
如何一键升级Python所有包
2020/11/05 Python
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
学生犯错保证书
2015/05/09 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫