基于JQuery制作可編輯的表格特效
最近做了個項(xiàng)目,其中項(xiàng)目要求:點(diǎn)擊表格后可直接編輯,回車或鼠標(biāo)點(diǎn)擊頁面其他地方后編輯生效,按Esc可取消編輯
2個小伙伴給出了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();
//建立一個文本框,設(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)時觸發(fā)全選事件
input.trigger("focus").trigger("select");
//當(dāng)文本框失去焦點(diǎn)時重新變?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");
}
想比較來說,個人更喜歡第二種一些,小伙伴們是什么意見呢,歡迎留言給我。
- 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實(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è)置標(biāo)題的自動翻轉(zhuǎn)
我們平時在開發(fā)web程序的時候,想把一個新聞源滾動顯示新聞的條目的標(biāo)題及內(nèi)容摘要,而且是每次一條,有點(diǎn)類似csdn的滾動廣告。2009-10-10
jQuery操作 input type=checkbox的實(shí)現(xiàn)代碼
jQuery操作 input type=checkbox的實(shí)現(xiàn)代碼,需要的朋友可以參考下,這邊腳本之家推薦大家看我們以前發(fā)布的文章2012-06-06
jQuery+AJAX實(shí)現(xiàn)網(wǎng)頁無刷新上傳
這篇文章主要介紹了jQuery+AJAX實(shí)現(xiàn)網(wǎng)頁無刷新上傳的相關(guān)資料,十分詳細(xì),需要的朋友可以參考下2015-02-02
ztree獲取選中節(jié)點(diǎn)時不能進(jìn)入可視區(qū)域出現(xiàn)BUG如何解決
zTree 是一個依靠 jQuery 實(shí)現(xiàn)的多功能 “樹插件”。優(yōu)異的性能、靈活的配置、多種功能的組合是 zTree 最大優(yōu)點(diǎn)。本文給大家介紹ztree獲取選中節(jié)點(diǎn)時不能進(jìn)入可視區(qū)域出現(xiàn)BUG如何解決的相關(guān)資料,對ztree獲取選中節(jié)點(diǎn)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
基于jquery點(diǎn)擊自以外任意處,關(guān)閉自身的代碼
主要功能是點(diǎn)擊顯示,然后通過點(diǎn)擊頁面的任意位置都能關(guān)閉顯示效果,主要是$(document).click的作用2012-02-02
Jquery attr("checked") 返回checked或undefined 獲取選中失效
$('#cb').attr('checked'); 返回的是checked或者是undefined,不是原來的true和false了,有關(guān)此問題的解決方法如下,感興趣的朋友可以參考下2013-10-10
jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)延遲跳轉(zhuǎn)的方法,涉及jQuery中setTimeout方法延遲觸發(fā)的使用技巧,需要的朋友可以參考下2015-06-06

