首页 web前端 js教程 一样的table?不一样的table(可编辑状态table)_jquery

一样的table?不一样的table(可编辑状态table)_jquery

May 16, 2016 pm 05:49 PM
table 可编辑

新的一天开始了,生活还要继续,今天要和大家分享的是不一样的table,普通的table就用于显示数据,今天要分享的table不仅仅能显示数据,还可以对数据进行编辑,当鼠标点击数据时相应的数据格就变成可编辑的状态,废话不多说,进入今天的主题,首先完成HTML页面:

复制代码 代码如下:





JQueryProject1



































鼠标点击下列内容可以进行编辑
学号 姓名
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,不妨动手试一试。谢谢你耐心的读完本文,希望对你会有所帮助。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用 Vue 实现可编辑的数据表格? 如何使用 Vue 实现可编辑的数据表格? Jun 25, 2023 pm 06:20 PM

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

如何使用Layui开发一个支持可编辑的个人日程管理系统 如何使用Layui开发一个支持可编辑的个人日程管理系统 Oct 25, 2023 am 11:42 AM

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

vue3 table组件怎么使用 vue3 table组件怎么使用 May 12, 2023 pm 09:40 PM

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

Vue文档中的可编辑表格实现方法 Vue文档中的可编辑表格实现方法 Jun 20, 2023 pm 06:43 PM

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

如何利用Layui实现可编辑的表格功能 如何利用Layui实现可编辑的表格功能 Oct 25, 2023 am 11:27 AM

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

如何使用Layui开发一个支持可编辑的电子书阅读器 如何使用Layui开发一个支持可编辑的电子书阅读器 Oct 24, 2023 am 08:08 AM

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

如何使用Vue和Canvas开发可编辑的矢量图形应用 如何使用Vue和Canvas开发可编辑的矢量图形应用 Jul 19, 2023 pm 03:07 PM

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

如何使用Layui开发一个支持可编辑的流程图设计器 如何使用Layui开发一个支持可编辑的流程图设计器 Oct 27, 2023 pm 01:07 PM

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

See all articles