基于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跨Iframe选择实现代码
Aug 19 Javascript
jquery实现心算练习代码
Dec 06 Javascript
js验证是否为数字的总结
Apr 14 Javascript
jQuery学习笔记之jQuery动画效果
Sep 09 Javascript
扩展JS Date对象时间格式化功能的小例子
Dec 02 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
Mar 16 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
Mar 09 Javascript
JavaScript实现点击自制菜单效果
Feb 02 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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php-app开发接口加密详解
2018/04/18 PHP
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
node.js中watch机制详解
2014/11/17 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
基于并发服务器几种实现方法(总结)
2017/12/29 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Numpy之random函数使用学习
2019/01/29 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
大家访活动实施方案
2014/03/10 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python