基于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数据缓存功能的实现思路及简单模拟
May 27 Javascript
jquery实现按Enter键触发事件示例
Sep 10 Javascript
jquery禁用右键示例
Apr 28 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 Javascript
AngularJS基础 ng-if 指令用法
Aug 01 Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
Feb 08 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
Jun 14 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
Vue + Scss 动态切换主题颜色实现换肤的示例代码
Apr 27 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 判断常量,变量和函数是否存在
2009/04/26 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
python http接口自动化脚本详解
2018/01/02 Python
Python实现的栈(Stack)
2018/01/26 Python
python实现Adapter模式实例代码
2018/02/09 Python
python发送告警邮件脚本
2018/09/17 Python
Python面向对象进阶学习
2019/05/21 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
小学老师寄语大全
2014/04/04 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
普通员工辞职信范文
2015/05/12 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server