利用jQuery实现可以编辑的表格


Posted in Javascript onMay 26, 2014

今天学习了利用jQuery实现可以编辑的表格这个例子。这个例子需求是这样的:在前台的表格中单击单元格便可修改其中的内容,回车键保存修改的内容,esc撤销保存的内容。原理:单击客户端表格单元格时,在单元格中添加一个文本框,并将单元格中原来的内容赋值给文本框,再进一步去修改文本框内容,修改后将文本框内容重新赋值给单元格。

源码:

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 
<!DOCTYPE html 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<title>jq2—可以编辑的表格</title> 
<link href="css/editTable.css" rel="stylesheet" /> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/editTable.js"></script> 
<%--<script type="text/javascript" src="js/jquery-1.9.1.js"></script>--%> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<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> 
</div> 
</form> 
</body> 
</html>

css代码:
body { 
} 
table { 
border:1px solid #000000; 
border-collapse:collapse;/*单元格边框合并*/ 
width:400px; 
} 
table td { 
border:1px solid #000000; 
width:50%; 
} 
table th { 
border:1px solid #000000; 
width:50%; 
} 
tbody th { 
background-color:#426fae; 
}

jquery代码
$(function () { 
//找到表格中除了第一个tr以外的所有偶数行 
//使用even为了通过tbody tr返回所有tr元素 
$("tbody tr:even").css("background-color", "#ece9d8"); 
//找到所有的学号单元格 
var numId = $("tbody td:even"); //给单元格注册鼠标点击事件 
numId.click(function () { 
//找到对应当前鼠标点击的td,this对应的就是响应了click的那个td 
var tdObj = $(this); 
//判断td中是否有文本框 
if (tdObj.children("input").length>0) { 
return false; 
} 
//获取表格中的内容 
var text = tdObj.html(); 
//清空td中的内容 
tdObj.html(""); 
//创建文本框 
//去掉文本框的边框 
//设置文本框中字体与表格中的文字大小相同。 
//设置文本框的背景颜色与表格的背景颜色一样 
//是文本框的宽度和td的宽度相同 
//并将td中值放入文本框中 
//将文本框插入到td中 
var inputObj = $("<input type='text'>").css("border-width", "0").css("font-size", tdObj.css("font-size")).css("background-color", tdObj.css("background-color")).width(tdObj.width()).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中的内容还原成原来的内容 
tdObj.html(text); 
} 
}); 
}); 
});

总结:通过这一实例的学习能获得的知识点:

一、html方面

1.table中可以包含thead和tbody

2.表头的内容中可以放th中

3.table{}这种写法称作标签选择器,可以对整个table产生影响。

4.table td{}这种写法表示table中包含的所有td。

二、jquery方面

$()的括号中可以放4种不同的参数

1.参数直接放function,表示页面加载完毕:例如上述例子中jquery代码中的第1行$(function(){})

2.参数可以是css类选择器,并被包装成一个jquery对象。例如:上述例子中jquery代码的第4行$(“tbody tr:even”)

3.参数如果是html文本,可以创建dom节点,并包装成jquery对象。例如:上述例子中jquery代码的第27行$("<input type='text'>")

4.参数可以是一个dom对象,这个方法相当于吧dom对象装换成jquery对象。上述例子中jquery代码的第11行var tdObj = $(this)

本例子中的jquery对象

1.jquery对象后面加css属性,可以设置节点的css属性。例如上述例子中jquery代码中的第4行$("tbody tr:even").css("background-color", "#ece9d8");

2.jquery对象内容中包含了选择器对应的dom节点,以数组保存。

3.jquery对象后面加html方法可以设置或获取节点的html内容。例如上述例子中jquery代码中的第17行var text = tdObj.html()

4.jquery对象后面加val方法,可以获取或设置节点的value值。例如上述例子中jquery代码中第41行var inputtext = $(this).val()

5.jquery对象后面加width方法,可以设置或获取某个节点的宽度。例如上述例子中jquery代码中第27行tdObj.width()

6.jquery对象后面加apppendTo方法可以将一个节点追加到另一个节点所有子节点后面。例如上述例子中jquery代码中第27行appendTo(tdObj)

7.jquery对象后面加trigger方法可以出发某个js事件发生。例如上述例子中jquery代码中第29行inputObj.trigger("focus").trigger("select")

8.jquery对象后面加children方法可以获得某个节点的子节点,可以制定参数来限制子节点的内容。例如上述例子中jquery代码中第13行tdObj.children("input").length

9.如果选择器返回的jquery对象中包含多个dom节点,在这个对象上注册类似click事件,所有dom节点都会用于此事件。例如上述例子中jquery代码中第9行numId.click;

Javascript 相关文章推荐
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
Apr 25 Javascript
细说浏览器特性检测(2)-通用事件检测
Nov 05 Javascript
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
JavaScript通过元素的ID和name设置样式
Jul 08 Javascript
jquery实现超简洁的TAB选项卡效果代码
Aug 28 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 Javascript
JS中FileReader类实现文件上传及时预览功能
Mar 27 Javascript
微信小程序实现选项卡滑动切换
Oct 22 Javascript
js实现简单的购物车有图有代码
May 26 #Javascript
js函数参数设置默认值的一种变通实现方法
May 26 #Javascript
单元选择合并变色示例代码
May 26 #Javascript
jquery实现的一个文章自定义分段显示功能
May 23 #Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 #Javascript
ie 7/8不支持trim的属性的解决方案
May 23 #Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 #Javascript
You might like
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
pow在python中的含义及用法
2019/07/11 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
药学专业大专生的自我评价
2013/12/12 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
经典导游欢迎词
2015/01/26 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js