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 相关文章推荐
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
javascript的函数作用域
Nov 12 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 Javascript
webpack 2.x配置reactjs基本开发环境详解
Aug 08 Javascript
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
关于Vue中$refs的探索浅析
Nov 05 Javascript
详解vue 组件的实现原理
Nov 12 Javascript
vue实现倒计时功能
Mar 24 Vue.js
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
PHP5/ZendEngine2的改进
2006/10/09 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
php绘制一条直线的方法
2015/01/24 PHP
javascript比较文档位置
2008/04/08 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
javascript中常用编程知识
2013/04/08 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python Matplotlib库入门指南
2015/05/18 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
基于Python中的yield表达式介绍
2019/11/19 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
匡威比利时官网:Converse Belgium
2017/04/13 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
一套PHP的笔试题
2013/05/31 面试题
软件测试工程师结构化面试题库
2016/11/23 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
教师开学感言
2014/02/14 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
教你nginx跳转配置的四种方式
2022/07/07 Servers