基于JQuery制作可編輯的表格特效
最近做了個(gè)項(xiàng)目,其中項(xiàng)目要求:點(diǎn)擊表格后可直接編輯,回車或鼠標(biāo)點(diǎn)擊頁面其他地方后編輯生效,按Esc可取消編輯
2個(gè)小伙伴給出了2中解決方案,大家來看看哪種更合適呢?
第一種單擊表格可以編輯的方法
//相當(dāng)于在頁面中的 body標(biāo)簽加上onload事件
$(function() {
//找到所有的td節(jié)點(diǎn)
var tds = $("td");
//給所有的td添加點(diǎn)擊事件
tds.click(function() {
//獲得當(dāng)前點(diǎn)擊的對象
var td = $(this);
//取出當(dāng)前td的文本內(nèi)容保存起來
var oldText = td.text();
//建立一個(gè)文本框,設(shè)置文本框的值為保存的值
var input = $("<input type='text' value='" + oldText + "'/>");
//將當(dāng)前td對象內(nèi)容設(shè)置為input
td.html(input);
//設(shè)置文本框的點(diǎn)擊事件失效
input.click(function() {
return false;
});
//設(shè)置文本框的樣式
input.css("border-width", "0");
input.css("font-size", "16px");
input.css("text-align", "center");
//設(shè)置文本框?qū)挾鹊扔趖d的寬度
input.width(td.width());
//當(dāng)文本框得到焦點(diǎn)時(shí)觸發(fā)全選事件
input.trigger("focus").trigger("select");
//當(dāng)文本框失去焦點(diǎn)時(shí)重新變?yōu)槲谋?br /> input.blur(function() {
var input_blur = $(this);
//保存當(dāng)前文本框的內(nèi)容
var newText = input_blur.val();
td.html(newText);
});
//響應(yīng)鍵盤事件
input.keyup(function(event) {
// 獲取鍵值
var keyEvent = event || window.event;
var key = keyEvent.keyCode;
//獲得當(dāng)前對象
var input_blur = $(this);
switch (key)
{
case 13://按下回車鍵,保存當(dāng)前文本框的內(nèi)容
var newText = input_blur.val();
td.html(newText);
break;
case 27://按下 esc鍵,取消修改,把文本框變成文本
td.html(oldText);
break;
}
});
});
});
第二種單擊表格可以編輯的方法
$(document).ready(function(){
var tds = $("td");
tds.click(tdClick);
});
function tdClick(){
var tdnode = $(this);
var tdtext = tdnode.text();
tdnode.html("");
var input = $("<input>");
input.val(tdtext); // input.attr("value",tdtext);
input.keyup(function(event){
var myEvent = event || window.event;
var keyCode = myEvent.keyCode;
if(keyCode == 13){
var inputnode = $(this);
var inputtext = inputnode.val();
var td = inputnode.parent();
td.html(inputtext);
td.click(tdClick);
}
if(keyCode == 27){ //判斷是否按下ESC鍵
$(this).parent().html(tdtext);
$(this).parent().click(tdClick);
}
});
tdnode.append(input);
tdnode.children("input").trigger("select");
//輸入框失去焦點(diǎn),所執(zhí)行的方法
input.blur(function(){
tdnode.html($(this).val());
tdnode.click(tdClick);
});
tdnode.unbind("click");
}
想比較來說,個(gè)人更喜歡第二種一些,小伙伴們是什么意見呢,歡迎留言給我。
- jQuery實(shí)現(xiàn)的可編輯表格完整實(shí)例
- 基于Bootstrap使用jQuery實(shí)現(xiàn)簡單可編輯表格
- BootStrap和jQuery相結(jié)合實(shí)現(xiàn)可編輯表格
- jQuery+PHP實(shí)現(xiàn)可編輯表格字段內(nèi)容并實(shí)時(shí)保存
- jQuery實(shí)現(xiàn)可編輯的表格實(shí)例講解(2)
- jQuery(非HTML5)可編輯表格實(shí)現(xiàn)代碼
- 基于PHP+Jquery制作的可編輯的表格的代碼
- jquery學(xué)習(xí)筆記二 實(shí)現(xiàn)可編輯的表格
- 用Jquery實(shí)現(xiàn)可編輯表格并用AJAX提交到服務(wù)器修改數(shù)據(jù)
- jQuery一步一步實(shí)現(xiàn)跨瀏覽器的可編輯表格,支持IE、Firefox、Safari、Chrome、Opera
- jQuery實(shí)現(xiàn)可以編輯的表格實(shí)例詳解【附demo源碼下載】
相關(guān)文章
jQuery實(shí)現(xiàn)contains方法不區(qū)分大小寫的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)contains方法不區(qū)分大小寫的方法,實(shí)例分析了針對contains方法的重寫技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
jQuery zclip插件實(shí)現(xiàn)跨瀏覽器復(fù)制功能
這篇文章主要介紹了jQuery zclip插件實(shí)現(xiàn)跨瀏覽器復(fù)制功能的方法,以及在實(shí)現(xiàn)過程中遇到的問題,感興趣的小伙伴們可以參考一下2015-11-11
jQuery獲取父元素及父節(jié)點(diǎn)的方法小結(jié)
這篇文章主要介紹了jQuery獲取父元素及父節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式總結(jié)分析了jQuery針對父元素及父節(jié)點(diǎn)操作的常用技巧,需要的朋友可以參考下2016-04-04
在次封裝easyui-Dialog插件實(shí)現(xiàn)代碼
在次封裝easyui-Dialog插件實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-11-11
基于jQuery的360圖片展示實(shí)現(xiàn)代碼
基于jQuery的360圖片展示實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-06-06
jQuery 1.3 和 Validation 驗(yàn)證插件1.5.1
jQuery 1.3已經(jīng)新鮮出爐了,你可以通過jQuery 的官方博客查看相關(guān)細(xì)節(jié)。jQuery三歲了!2009-07-07

