一样的table?不一样的table(可编辑状态table)_jquery
新的一天开始了,生活还要继续,今天要和大家分享的是不一样的table,普通的table就用于显示数据,今天要分享的table不仅仅能显示数据,还可以对数据进行编辑,当鼠标点击数据时相应的数据格就变成可编辑的状态,废话不多说,进入今天的主题,首先完成HTML页面:
鼠标点击下列内容可以进行编辑 | |
---|---|
学号 | 姓名 |
000001 | 张三 |
000002 | 李四 |
000003 | 王五 |
000004 | 赵六 |
没错现在它还是一个普通的table,一点样式都还没有,为了让这个table显得不那么抽象,接下来为它引入CSS样式
table{
width:400px;
height: 150px;
}
table, table td, table th{
border:1px solid black;
border-collapse: collapse;
}
table td{
width:50%;
height: 25px;
}
thead th{
background-color:#87CEFA;
}
tbody th{
background-color:#FFFACD;
}
在HTML页面中可编辑的页面元素就只有那么几个,很不幸table并不是其中一个,为了让table变得可编辑,就要向table中插入可编辑的页面元素,再用CSS装饰一下,让它看起来还是一个普通的table,然而却具备了可编辑的功能,这就是JS所要完成的功能,JS代码如下:
$(function(){
var content;
$("#content tr:odd").css("background-color","#D2B48C");
$("#content tr:even").css("background-color","#C0C0C0");
$("#content td").click(function(){
var clickObj = $(this);
content = clickObj.html();
changeToEdit(clickObj);
});
function changeToEdit(node){
node.html("");
var inputObj = $("");
inputObj.css("border","0").css("background-color",node.css("background-color"))
.css("font-size",node.css("font-size")).css("height","20px")
.css("width",node.css("width")).val(content).appendTo(node)
.get(0).select();
inputObj.click(function(){
return false;
}).keyup(function(event){
var keyvalue = event.which;
if(keyvalue==13){
node.html(node.children("input").val());
}
if(keyvalue==27){
node.html(content);
}
}).blur(function(){
if(node.children("input").val()!=content){
if(confirm("是否保存修改的内容?","Yes","No")){
node.html(node.children("input").val());
}else{
node.html(content);
}
}else{
node.html(content);
}
});
}
});
接下来对这段JS做简单的分析,全局变量 var content 用于保存编辑之前表格中的内容,有时候用户对表格进行编辑了但却并不想保存编辑后的结果,就需要将表格中的内容还原到编辑之前,所以当鼠标点击的时候首先要将表格的内容保存起来。
下面这两句$("#content tr:odd").css("background-color","#D2B48C"); $("#content tr:even").css("background-color","#C0C0C0"); 是让table具备隔行变色,只是为了增加表格的可视性。var inputObj = $(""); 这一句生成一个可编辑的JQuery对象,也就是要插入表格中的可编辑元素,后面那一串.css()方法是给inputObj对象追加CSS样式,.css()方法不仅可以给某个对象设置CSS样式还可以获取某个对象的CSS样式,JQuery中提供了很多这样的方法。很多时候JQuery方法执行过后返回回来的还是JQuery对象,所以就出现了inputObj.css().css().css()....这样的写法。
appendTo()方法就实现了表格的可编辑性(也可用appendix()),将可编辑元素插入到表格中。.get(0).select()这两个方法是为了选中inputObj中的内容让焦点落在可编辑元素上,需要注意的是这两个方法一定要写在appendTo()之后,inputObj.click(function(){})这个方法也是必不可少的,删掉这个方法会有一个很有趣的bug,大家可以试一试。
紧接着的 keyup(function(event){}),可以通过 event.which 的方式获取键盘按下的键所对应的键值,常用的键值有 Enter键:13、Esc键:27,当用户按下Enter键时,就保存编辑后的内容,并将表格还原成普通表格,当用户按下Esc键时,将表格中的内容还原,也将表格还原成普通表格。
用户体验,苹果的出现让这个词更深入人心,这里也凑下热闹。为了提高用户体验这里增加了blur(function(){})方法,当焦点离开可编辑元素时首先判断表格中的内容是否被改变,如果没有改变直接将表格及表格中的还原,如果有改变就提示用户是否保存。
今天的示例基本完工了,如果你将JS代码放在一个单独的JS文件中引用,可能会出现一个中文乱码的bug,不妨动手试一试。谢谢你耐心的读完本文,希望对你会有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题











随着前端技术的不断发展,数据表格成为企业管理及数据展示的重要工具之一。在日常开发中,有时需要在数据表格中进行数据修改或新增操作,这时候就需要实现可编辑的数据表格。本文将介绍如何使用Vue实现可编辑的数据表格。一、实现思路在实现可编辑的数据表格功能时,我们需要考虑以下几点:数据呈现:将数据渲染到表格中,以便展示和编辑。表格编辑:在表格中对数据进行编辑操作。

如何使用Layui开发一个支持可编辑的个人日程管理系统近年来,随着信息化技术的快速发展和人们生活节奏的加快,个人日程管理变得越来越重要。为了让人们更好地管理自己的时间和任务,我们可以使用Layui,这是一款基于JavaScript的前端UI框架,它提供了丰富的组件和简洁的风格,非常适合用来开发个人日程管理系统。一、环境准备首先,我们需要准备好开发环境。确保你

基础表格首先开发table组件之前,先想好要用什么样式的api,因为笔者在生产工作中用的都是element,所以前面几个组件风格和element类似,但是这次不打算用element的风格了,打算换一种,直接展示:我们期望用户这样使用:constdataList=[{id:1,name:'《JavaEE企业应用实战》',author:'dev1ce',price:'10.22',desc:

Vue.js是目前非常流行的前端框架之一,它使用数据驱动的方式来构建用户界面,具有数据双向绑定、组件化等特点。在Vue.js的文档中,提供了一个实现可编辑表格的方法,本文将介绍这种方法的具体实现步骤。准备数据首先要准备一组数据,这里以学生信息为例。数据格式可以是一个数组,每个元素包含姓名、性别、年龄等属性。students:[{name:'小明

如何利用Layui实现可编辑的表格功能Layui是一套经典而简洁的前端UI框架,具有丰富的组件和强大的功能。在使用Layui开发过程中,我们可能会遇到需要实现可编辑的表格功能的需求。本文将介绍如何利用Layui的table组件和form表单组件,实现可编辑的表格功能,并提供具体的代码示例。一、引入Layui库首先,在项目中引入Layui库的相关文件。可以选择

如何使用Layui开发一个支持可编辑的电子书阅读器概述:Layui是一款简单易用且功能强大的前端框架,它提供了丰富的UI组件和开发工具,使得开发者能够快速构建美观且功能完善的网页应用。本文将介绍如何使用Layui框架开发一个支持可编辑的电子书阅读器,使用户能够在电子书中进行划重点、标记、笔记等操作。步骤一:项目准备首先,我们需要准备一个基本的项目结构。创建一

如何使用Vue和Canvas开发可编辑的矢量图形应用引言:近年来,矢量图形在设计领域的应用越来越广泛,有很多基于矢量图形的设计工具如AdobeIllustrator等。在Web开发中,我们也希望能够开发出可编辑的矢量图形应用,以满足用户对设计的自定义需求。本文将介绍如何使用Vue和Canvas开发可编辑的矢量图形应用,并提供详细的代码示例。准备工作首先,我

如何使用Layui开发一个支持可编辑的流程图设计器引言:随着信息化的快速发展,流程图在各行各业中的应用越来越广泛。然而,目前市面上流程图编辑器的选择较为有限,且大多数需要付费。本文将介绍如何使用Layui框架开发一个支持可编辑的流程图设计器,并提供具体的代码示例。一、Layui简介:Layui是一个简单易用的前端框架,提供了丰富的组件和接口,可以快速搭建We
