基于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脚本复制网页上的一个表格的不错实现方法
Dec 29 Javascript
json跟xml的对比分析
Jun 10 Javascript
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
Jquery 表单验证类介绍与实例
Jun 09 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
Vue中的作用域CSS和CSS模块的区别
Oct 09 Javascript
JavaScript 九种跨域方式实现原理
Feb 11 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 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的配置文件php.ini
2006/10/09 PHP
php中异常处理方法小结
2015/01/09 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
vue组件中的数据传递方法
2018/05/14 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
python3.5绘制随机漫步图
2018/08/27 Python
python 标准差计算的实现(std)
2019/07/29 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python imread、newaxis用法详解
2019/11/04 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
初中政治教学反思
2014/01/17 职场文书
公司委托书格式范本
2014/09/16 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
我爱我班主题班会
2015/08/13 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书