今天學習了利用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); 
} 
}); 
}); 
}); 
新聞熱點
疑難解答
圖片精選