基于JQuery制作可编辑的表格特效
来源: 阅读:762 次 日期:2014-12-26 15:08:03
温馨提示: 小编为您整理了“基于JQuery制作可编辑的表格特效”,方便广大网友查阅!

最近做了个项目,其中项目要求:点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按Esc可取消编辑

2个小伙伴给出了2中解决方案,大家来看看哪种更合适呢?

第一种单击表格可以编辑的方法

代码如下:

//相当于在页面中的 body标签加上onload事件

$(function() {

//找到所有的td节点

var tds = $("td");

//给所有的td添加点击事件

tds.click(function() {

//获得当前点击的对象

var td = $(this);

//取出当前td的文本内容保存起来

var oldText = td.text();

//建立一个文本框,设置文本框的值为保存的值

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

//将当前td对象内容设置为input

td.html(input);

//设置文本框的点击事件失效

input.click(function() {

return false;

});

//设置文本框的样式

input.css("border-width", "0");

input.css("font-size", "16px");

input.css("text-align", "center");

//设置文本框宽度等于td的宽度

input.width(td.width());

//当文本框得到焦点时触发全选事件

input.trigger("focus").trigger("select");

//当文本框失去焦点时重新变为文本

input.blur(function() {

var input_blur = $(this);

//保存当前文本框的内容

var newText = input_blur.val();

td.html(newText);

});

//响应键盘事件

input.keyup(function(event) {

// 获取键值

var keyEvent = event || window.event;

var key = keyEvent.keyCode;

//获得当前对象

var input_blur = $(this);

switch (key)

{

case 13://按下回车键,保存当前文本框的内容

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");

//输入框失去焦点,所执行的方法

input.blur(function(){

tdnode.html($(this).val());

tdnode.click(tdClick);

});

tdnode.unbind("click");

}

想比较来说,个人更喜欢第二种一些,小伙伴们是什么意见呢,欢迎留言给我。

更多信息请查看IT技术专栏

更多信息请查看网页制作
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map