可编辑的表格
通过js来处理,分四步:
-
要解决内部单双数背景颜色不一样
-
将要编辑的表格中加一个文本框
-
将文本框覆盖要编辑的表格,还要将原来表格中的值保存下来,并放到文本框中去
-
通过键盘来控制,实现Esc功能
JSP代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>可编辑的表格</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/jquery-1.4.3.js"></script>
<script type="text/javascript" src="js/editTable.js"></script>
<link rel="stylesheet" type="text/css" href="css/editTable.css">
</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>
JS代码
/*
* 1,要解决内部单双数背景颜色不一样
* 2,将要编辑的表格中加一个文本框
* 3,将文本框覆盖要编辑的表格,还要将原来表格中的值保存下来,并放到文本框中去
* 4,通过键盘来控制,实现Esc功能
*/
// $(callback)是$(document).ready()的简写。
$(function(){
//找到表格的内容区域中所有的奇数行
$("tbody>tr:even").css("background-color","#ECE9D8");
//接下来就是要找到有学好的表格
var numTd = $("tr>td:even");
numTd.click(function(){
//找到当前鼠标点击的td,this对应的就是响应了click的那个td
var tdobj = $(this);
//要是td中有子节点input,就return false,不执行click处理
if(tdobj.children("input").length>0){
return false;
}
//获取选择的td的值
var tdtext = tdobj.html();
//然后再清空td中的内容
tdobj.html("");
//创建一个文本框
var inputobj = $("<input type='text'>");
//将创建的文本框加到td中去
inputobj.appendTo(tdobj);
//将文本框的长度设置为td的长度
inputobj.width(tdobj.width());
//将文本框的边框去掉
inputobj.css("border-width","0");
//将文本框的背景颜色设置和td的一样
inputobj.css("background-color",tdobj.css("background-color"));
//将td中的值放到input中去
//inputobj.text(tdtext);
inputobj.val(tdtext);
//将input中的字体设置和原来的一样
inputobj.css("font-size","16px");
//设置文本框插入之后就被选中
inputobj.trigger("focus").trigger("select");
//防止事件传播
inputobj.click(function() {
return false;
});
//处理文本框上回车和esc按键的操作
inputobj.keyup(function(event){
//获取当前按下键盘的键值
var keycode = event.which;
//处理回车键
if(keycode == 13){
//获取当当前文本框中的内容
var inputvalue = $(this).val();
//tdobj.text(inputvalue);
//tdobj.html(inputvalue);
tdobj.val(inputvalue);
}
//处理esc按键
if(keycode == 27){
//将td中的内容还原成text
tdobj.html(tdtext);
}
});
});
});
CSS代码
@CHARSET "UTF-8";
table{
border: 1px solid black;
/*修正单元格之间的边框不能合并*/
border-collapse: collapse;
width: 400px;
}
table th {
border: 1px solid black;
width: 50%;
}
table td {
border: 1px solid black;
width: 50%;
}
tbody th {
background-color: #A3BAE9;
}