基于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 相关文章推荐
跨浏览器的设置innerHTML方法
Sep 18 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
Mar 10 Javascript
JavaScript替换当前页面的方法
Apr 03 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
vue中mint-ui的使用方法
Apr 04 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 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+mysql 实现身份验证代码
2010/03/24 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
php实现cookie加密的方法
2015/03/10 PHP
隐性调用php程序的方法
2015/06/13 PHP
php HTML无刷新提交表单
2016/04/05 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
flask-socketio实现WebSocket的方法
2018/07/31 Python
Python中is和==的区别详解
2018/11/15 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
中学生爱国演讲稿
2013/12/31 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android