基于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 相关文章推荐
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
node.js中的fs.unlink方法使用说明
Dec 15 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
javascript实现汉字转拼音代码分享
Apr 20 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
Sep 21 Javascript
JavaScript中数组去除重复的三种方法
Apr 22 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
Vue filter介绍及详细使用
Apr 04 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
mapboxgl实现带箭头轨迹线的代码
Jan 04 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
php中chdir()函数用法实例
2014/11/13 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
js实现动态时钟
2020/03/12 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
python speech模块的使用方法
2020/09/09 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
Lookfantastic俄罗斯:欧洲在线化妆品零售商
2019/08/06 全球购物
中科创达面试题
2016/12/28 面试题
公务员总结性个人自我评价
2013/12/05 职场文书
小学数学国培感言
2014/03/10 职场文书
党风廉政建设责任书
2014/04/14 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
离婚协议书的范本
2015/01/27 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
工地食品安全责任书
2015/05/09 职场文书
初中思品教学反思
2016/02/20 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang