当前位置: 首页 > news >正文

【JQuery】可直接编辑的表格

【JQuery实战视频教程】

功能:创建一个表格,用户单击某个单元格后,可以直接修改单元格文本。

   在编辑状态下,用户可按回车键确认修改,按ESC键撤销修改。

效果:


思路:

当用户点击某个单元格后,立即向该单元格内插入一个文本框,将它的宽、高都设置成与单元格相的数值。用户确认输入后,清空该单元格内的所有HTML代码,然后把内容设置为用户刚刚输入的文本。


HTML代码:

<table align="center">
			<tr>
				<td>学号</td>
				<td>姓名</td>
			</tr>
			<tr>
				<td>001</td>
				<td>dog</td>
			</tr>
			<tr>
				<td>002</td>
				<td>cat</td>
			</tr>
			<tr>
				<td>003</td>
				<td>pig</td>
			</tr>
		</table>

JavaScript代码:

$(function(){
	$("td").click(function(event){
		//td中已经有了input,则不需要响应点击事件
		if($(this).children("input").length > 0)
			return false;
	
		var tdObj = $(this);
		var preText = tdObj.html(); //得到当前文本内容
		var inputObj = $("<input type='text' />"); //创建一个文本框元素
		
		tdObj.html(""); //清空td中的所有元素
		inputObj
			.width(tdObj.width()) //设置文本框宽度与td相同
			.height(tdObj.height())
			.css({border:"0px",fontSize:"17px",font:"宋体"})
			.val(preText)
			.appendTo(tdObj) //把创建的文本框插入到tdObj子节点的最后
			.trigger("focus") //用trigger方法触发事件
			.trigger("select");
			
		inputObj.keyup(function(event){
			if(13 == event.which) //用户按下回车
			{
				var text = $(this).val();
				tdObj.html(text);
			}
			else if(27 == event.which) //ESC键
			{
				tdObj.html(preText);
			}
		});
		
		//已进入编辑状态后,不再处理click事件
		inputObj.click(function(){
			return false;
		});
	});
});


转载于:https://www.cnblogs.com/whongfei/archive/2012/12/18/5247012.html

相关文章:

  • BE恢复单个邮箱
  • 医疗系统发展分析(转)
  • 在VMware Workstation 9上跑Win2012 HyperV
  • 对TCL/TK的一个小总结
  • httpclient完全支持ssl连接方式
  • 《高效能人士的7种心态》读后感+一年实施结果
  • 浅谈字节序(Endianness)
  • Exchange 2003队列中堆积大量垃圾邮件解决方法?
  • JavaScript面向对象编程深入分析(3)
  • 单例模式 c++实现
  • 用MDT 2012为企业部署windows 7(六)--Deploymentshare$常用文件夹介绍
  • 如何区分ripv1和ripv2?
  • Hadoop系列之九:Hadoop集群伪分布式模式的实现详解
  • 《C#线程参考手册》读书笔记(二):.NET中的线程
  • tomcat创建用户名
  • 《剑指offer》分解让复杂问题更简单
  • CSS 三角实现
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • gulp 教程
  • iOS 系统授权开发
  • JavaScript学习总结——原型
  • JSDuck 与 AngularJS 融合技巧
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • SpiderData 2019年2月23日 DApp数据排行榜
  • TypeScript实现数据结构(一)栈,队列,链表
  • Vue2.x学习三:事件处理生命周期钩子
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 不上全站https的网站你们就等着被恶心死吧
  • 如何设计一个比特币钱包服务
  • 软件开发学习的5大技巧,你知道吗?
  • Mac 上flink的安装与启动
  • NLPIR智能语义技术让大数据挖掘更简单
  • puppet连载22:define用法
  • ​【已解决】npm install​卡主不动的情况
  • $.ajax()
  • $jQuery 重写Alert样式方法
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)3D模板阴影原理
  • (转)关于pipe()的详细解析
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net web项目 调用webService
  • .Net 代码性能 - (1)
  • .NET 使用 XPath 来读写 XML 文件
  • .net(C#)中String.Format如何使用
  • .net快速开发框架源码分享
  • @Autowired多个相同类型bean装配问题