jQuery实现可以编辑的表格实例详解【附demo源码下载】


Posted in Javascript onJuly 09, 2016

本文实例讲述了jQuery实现可以编辑的表格。分享给大家供大家参考,具体如下:

今天小编主要给大家讲解一下,如何利用jQuery+js+css实现表格的编辑。接下来,小编就简单总结一下如何实现这个小例子。

第一步:编写html代码,代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>JQuery实例2:可以编辑的表格</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link type="text/css" rel="stylesheet" href="css/editTable.css" />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/editTable.js"></script>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th colspan="2">鼠标点击表格项就可以编辑</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th>学号</th>
          <th>姓名</th>
        </tr>
        <tr>
          <td>000001</td>
          <td>张三</td>
        </tr>
        <tr>
          <td>000002</td>
          <td>李四</td>
        </tr>
        <tr>
          <td>000003</td>
          <td>王五</td>
        </tr>
        <tr>
          <td>000004</td>
          <td>赵六</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

分析一下上面的代码,我们很容易看出来table中可以包含thead和tbody,表头的内容可以放到th中,我们来运行一下,看看我们的效果:

jQuery实现可以编辑的表格实例详解【附demo源码下载】

从上面的运行效果来看,我们很容易看出来,这个表格的基本轮廓已经显示出来,但是似乎少了些许味道,接着,我们来设置一下表格的样式,我们来编写css的代码,如下所示:

table {
  border: 1px solid black;
  /*修正单元格之间的边框不能合并*/
  border-collapse: collapse;
  width: 400px;
}
table td {
  border: 1px solid black;
  width: 50%;
}
table th {
  border: 1px solid black;
  width: 50%;
}
tbody th {
  background-color: #A3BAE9;
}

分析一下上面的代码,table{}这种写法称作为标签选择器,可以对整个页面所有的table产生影响;table td{}这种写法表示的是table中包含的所有td;可以通过broder-collapse:collapse这种方式来使表格中的单元格边框合并。接着,我们连运行一下,看看运行的效果:

jQuery实现可以编辑的表格实例详解【附demo源码下载】

上述的运行效果,已经非常接近我们需要实现的效果了,但是还是欠点火候,还是不能都编辑,接着,js里面的代码,相应的,在js中我们也要建立两个文件,一个jquery一个editTable,鉴于jquery的代码较多,所以小编已经上传相关资源,有需要的小伙伴可以下载文末链接,接着,我们来编写ueditTable的代码,来给整理页面添加行为能力:

//需要首先通过Javascript来解决内容部分奇偶行的背景色不同
//$(document).ready(function(){
//
//});
//简化的ready写法
$(function(){
  //找到表格的内容区域中所有的奇数行
  //使用even是为了把通过tbody tr返回的所有tr元素中,在数组里面下标是偶数的元素返回,因为这些元素,实际上才是我们期望的tbody里面的奇数行
  $("tbody tr:even").css("background-color","#ECE9D8");
  //我们需要找到所有的学号单元格
  var numTd = $("tbody td:even");
  //给这些单元格注册鼠标点击的事件
  numTd.click(function() {
    //找到当前鼠标点击的td,this对应的就是响应了click的那个td
    var tdObj = $(this);
    if (tdObj.children("input").length > 0) {
      //当前td中input,不执行click处理
      return false;
    }
    var text = tdObj.html();
    //清空td中的内容
    tdObj.html("");
    //创建一个文本框
    //去掉文本框的边框
    //设置文本框中的文字字体大小是16px
    //使文本框的宽度和td的宽度相同
    //设置文本框的背景色
    //需要将当前td中的内容放到文本框中
    //将文本框插入到td中
    var inputObj = $("<input type='text'>").css("border-width","0")
      .css("font-size","16px").width(tdObj.width())
      .css("background-color",tdObj.css("background-color"))
      .val(text).appendTo(tdObj);
    //是文本框插入之后就被选中
    inputObj.trigger("focus").trigger("select");
    inputObj.click(function() {
      return false;
    });
    //处理文本框上回车和esc按键的操作
    inputObj.keyup(function(event){
      //获取当前按下键盘的键值
      var keycode = event.which;
      //处理回车的情况
      if (keycode == 13) {
        //获取当当前文本框中的内容
        var inputtext = $(this).val();
        //将td的内容修改成文本框中的内容
        tdObj.html(inputtext);
      }
      //处理esc的情况
      if (keycode == 27) {
        //将td中的内容还原成text
        tdObj.html(text);
      }
    });
  });
});

运行效果如下:

jQuery实现可以编辑的表格实例详解【附demo源码下载】

完整实例代码点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
javascript框架设计之框架分类及主要功能
Jun 23 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
Aug 28 Javascript
深入理解JavaScript单体内置对象
Jun 06 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
jQuery实现文章图片弹出放大效果
Apr 06 jQuery
ES6下React组件的写法示例代码
May 04 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
js实现无限瀑布流实例方法
Sep 16 Javascript
react的hooks的用法详解
Oct 12 Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 #Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 #Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 #Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 #Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 #Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 #Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 #Javascript
You might like
PHP数据库操作面向对象的优点
2006/10/09 PHP
PHP 身份证号验证函数
2009/05/07 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python中集合类型(set)学习小结
2015/01/28 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python判断链表是否有环的实例代码
2020/01/31 Python
Python enumerate内置库用法解析
2020/02/24 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
申报职称专业技术个人的自我评价
2013/12/12 职场文书
2014村务公开实施方案
2014/02/25 职场文书
2014年节能工作总结
2014/12/18 职场文书
安全教育观后感
2015/06/17 职场文书
Redis 常见使用场景
2021/08/30 Redis