基于JQuery制作可編輯的表格特效
來源:易賢網(wǎng) 閱讀:806 次 日期:2014-12-26 15:08:03
溫馨提示:易賢網(wǎng)小編為您整理了“基于JQuery制作可編輯的表格特效”,方便廣大網(wǎng)友查閱!

最近做了個(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)擊的對(duì)象

var td = $(this);

//取出當(dāng)前td的文本內(nèi)容保存起來

var oldText = td.text();

//建立一個(gè)文本框,設(shè)置文本框的值為保存的值

var input = $("<input type='text' value='" + oldText + "'/>");

//將當(dāng)前td對(duì)象內(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)槲谋?/P>

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)前對(duì)象

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è)人更喜歡第二種一些,小伙伴們是什么意見呢,歡迎留言給我。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)頁制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:基于JQuery制作可編輯的表格特效
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)