jQuery實(shí)現(xiàn)可編輯的表格
前言
上一篇博客更新了在頁面中如何判斷用戶名是否已經(jīng)被輸入,這篇博客介紹一下頁面中的表格內(nèi)容如何像Excle表格一樣修改。
內(nèi)容
顯示效果

照例,先上代碼
HTML代碼:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="script/jquery-1.8.2.js"></script> <script type="text/javascript" src="script/EditTable.js"></script> <link href="CSS/EditTable.css" rel="stylesheet" /> </head> <body> <table> <thead> <tr> <th colspan="2">鼠標(biāo)點(diǎn)擊表格項(xiàng)就可以編輯</th> </tr> </thead> <tbody> <tr> <th>學(xué)號</th> <th>姓名</th> </tr> <tr> <td>0000001</td> <td>張三</td> </tr> <tr> <td>0000002</td> <td>李四</td> </tr> <tr> <td>0000003</td> <td>王五</td> </tr> <tr> <td>0000004</td> <td>趙六</td> </tr> </tbody> </table> </body> </html>
CSS代碼:
table {
border:1px solid black;
border-collapse:collapse;
width:400px;
}
table td{
border:1px solid black;
width:50%;
}
table th{
border:1px solid black;
width:50%;
}
tbody th {
background-color:#A3BAE9;
}
JavaScript代碼:
//需要首先通過JavaScript來解決內(nèi)容部分奇偶行的背景不同
$(function () {
//找到表格的內(nèi)容區(qū)域中所有的偶數(shù)行
$("tbody tr:even").css("background-color", "#ECE9D8");
//找到所有可以編輯的單元格
var numTd = $("tbody td:even");
//給這些單元格注冊鼠標(biāo)點(diǎn)擊的事件
numTd.click(function () {
//找到當(dāng)前鼠標(biāo)點(diǎn)擊的td,this對應(yīng)的就是響應(yīng)了click的那個td
var tdObj = $(this);
if (tdObj.children("input").length>0) {
//當(dāng)前td中有內(nèi)容,不執(zhí)行click操作
return false;
}
var text = tdObj.html();
tdObj.html("");
//創(chuàng)建一個文本框
//去掉文本框的邊框
//設(shè)置文本框中的文字字體大小事15px
//是文本框的寬度和td的寬度相同
//設(shè)置文本框的背景色
//需要將當(dāng)前td中的內(nèi)容放到文本框中
//清空td中的內(nèi)容
//文本框插入到td中去
var inputObj = $("<input type='text'>").css("border-width", "0").css("font-size", "15px").css("background-color", tdObj.css("background-color")).width(tdObj.width()).val(tdObj.html()).val(text).appendTo(tdObj);
//使得文本框插入之后就被選中
inputObj.trigger("focus").trigger("select");
inputObj.click(function () {
return false;
});
//處理文本框上回車和esc按鍵的操作
inputObj.keyup(function () {
//獲取當(dāng)前按下鍵盤的鍵值
var keycode = event.which;
//處理回車的情況
if (keycode == 13) {
//獲取到當(dāng)前文本框中的內(nèi)容
var inputtext = $(this).val();
//將td的內(nèi)容修改成文本框中的內(nèi)容
tdObj.html(inputtext);
}
//處理esc的情況
if (keycode == 27) {
tdObj.html(text);
}
});
});
});
這次代碼稍微有點(diǎn)長,但是對于一目十行的大神們來說這都不算啥!
總結(jié)
HTML知識點(diǎn):
- table中可以包含thead和tbody
- 表頭的內(nèi)容可以放到th中
CSS知識點(diǎn):
- table{}這種寫法稱作標(biāo)簽選擇器,可以對整個頁面所有的table產(chǎn)生影響
- table td{}這種寫法表示的是table中包含的所有td
- 可以通過border-collapse:collapse這種方式來使表格中的單元格的邊框合并
- 當(dāng)th上有背景色,這個th屬于的tr上定義的背景色會無效
- css方法可以用于設(shè)定或獲取節(jié)點(diǎn)的css屬性,參數(shù)名是css的屬性名
JavaScript知識點(diǎn):
- (function())是(function())是(document).ready(function(){})的簡化寫法
- $(“tbody tr”)可以返回tbody中的所有tr節(jié)點(diǎn)
- $(“tbody tr:even”)可以返回tbody中所有索引值是偶數(shù)的tr節(jié)點(diǎn)
- jQuery的對象內(nèi)容包含著選擇器對應(yīng)的DOM節(jié)點(diǎn),以數(shù)組形式保存
- get方法可以獲得jQuery對象中包含的某一個DOM節(jié)點(diǎn)
- function中的this代表執(zhí)行這個function的對象
- $()方法的參數(shù)是一個DOM對象時,這個方法相當(dāng)于把DOM對象轉(zhuǎn)換成jQuery對象
- children方法可以獲得某個節(jié)點(diǎn)的子節(jié)點(diǎn),可以指定參數(shù)來限制子節(jié)點(diǎn)的內(nèi)容
- 如果選擇器返回的jQuery對象中包含多個DOM節(jié)點(diǎn),在這個對象上注冊類是click這樣的時間是,所有DOM節(jié)點(diǎn)都會用于事件
- html方法可以設(shè)置或獲取節(jié)點(diǎn)的HTML內(nèi)容
- val方法可以獲取或設(shè)置節(jié)點(diǎn)的value值
- $()方法的參數(shù)如果是一段正確的HTML文本,則可以創(chuàng)建一個DOM節(jié)點(diǎn),并包裝成jQuery對象
- jQuery大部分方法都會返回執(zhí)行這個方法的jQuery對象,因此可以采用鏈?zhǔn)椒椒ǖ膶懛▉砭帉懡o予jQuery的代碼
- width方法可以設(shè)置或獲取某個節(jié)點(diǎn)的寬度
- appendTo方法可以將一個節(jié)點(diǎn)追加到另一個節(jié)點(diǎn)所有子節(jié)點(diǎn)的后面
- 阻止事件傳遞可以讓當(dāng)前節(jié)點(diǎn)的事件返回false
- trigger該方法可以觸發(fā)某個JavaScript的事件發(fā)生
- jQuery中某個實(shí)踐方法的參數(shù)function上可以定義一個event的參數(shù),jQuery會屏蔽瀏覽器的event差異,傳給我們一個可用的event對象
- jQuery的event對象上有一個which的屬性,可以獲得鍵盤按鍵的值
- 13表示回車鍵,27表示ESC鍵
end
謝謝您的閱讀!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery實(shí)現(xiàn)可編輯表格并生成json結(jié)果(實(shí)例代碼)
- jQuery 實(shí)現(xiàn)雙擊編輯表格功能
- jQuery實(shí)現(xiàn)的可編輯表格完整實(shí)例
- 基于Bootstrap使用jQuery實(shí)現(xiàn)簡單可編輯表格
- BootStrap和jQuery相結(jié)合實(shí)現(xiàn)可編輯表格
- jQuery+PHP實(shí)現(xiàn)可編輯表格字段內(nèi)容并實(shí)時保存
- jQuery(非HTML5)可編輯表格實(shí)現(xiàn)代碼
- 用Jquery實(shí)現(xiàn)可編輯表格并用AJAX提交到服務(wù)器修改數(shù)據(jù)
- jQuery一步一步實(shí)現(xiàn)跨瀏覽器的可編輯表格,支持IE、Firefox、Safari、Chrome、Opera
相關(guān)文章
jQuery獲取對象簡單實(shí)現(xiàn)方法小結(jié)
jQuery獲取對象,這里獲取的都是Jquery對象而不是Dom對象哦,但是他倆是可以轉(zhuǎn)換滴,新手朋友們可以看看2014-10-10
jQuery切換網(wǎng)頁皮膚并保存到Cookie示例代碼
這篇文章主要介紹通過jQuery切換網(wǎng)頁皮膚并將狀態(tài)保存到Cookie的相關(guān)代碼,需要的朋友可以參考下2014-06-06
jQuery實(shí)現(xiàn)一組圖片循環(huán)滾動
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)一組圖片循環(huán)滾動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
jquery實(shí)現(xiàn)select選中行、列合計(jì)示例
這篇文章主要介紹了jquery如何實(shí)現(xiàn)select選中行、列合計(jì)示例 ,需要的朋友可以參考下2014-04-04
javascript 全角轉(zhuǎn)換實(shí)現(xiàn)代碼
當(dāng)客戶端用戶切換輸入法至全角時可能您的表單提交會有漏洞哦!不過事實(shí)上js有這功能 可以將其轉(zhuǎn)換為非全角字符!2009-07-07
jquery tree 可編輯節(jié)點(diǎn)實(shí)現(xiàn)代碼(jquery一句話節(jié)點(diǎn)菜單)
jquery tree 可編輯節(jié)點(diǎn),實(shí)現(xiàn)的三級菜單實(shí)現(xiàn)代碼,這里我們將為大家準(zhǔn)備了兩個。一個是鋒利的jquery中的一句話導(dǎo)航菜單實(shí)現(xiàn)代碼。非常不錯。2009-11-11

