今天學習了利用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" />
<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 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>
復制代碼 代碼如下:
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;
}
復制代碼 代碼如下:
$(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);
}
});
});
});
新聞熱點
疑難解答
圖片精選