关灯
开启左侧

[网页制作] 基于jquery制作可编辑的表格特效

[复制链接]
swmozowtfl 发表于 2015-7-15 20:24:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
最近做了个项目,其中项目要求:点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按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);
}
想比较来说,个人更喜欢第二种一些,小伙伴们是什么意见呢,欢迎留言给我。

更多网页制作信息请查看: 网页制作
 

精彩评论13

正序浏览
Acropozelan 发表于 2016-1-20 21:26:18 | 显示全部楼层
 
我怎么就踩不死你呢??
 
mwxny 发表于 2016-1-20 21:26:23 | 显示全部楼层
 
哈哈 ok ~~~
 
alapScady 发表于 2016-1-20 21:26:38 | 显示全部楼层
 
想骂你.却不知道从何骂起.
 
Acropozelan 发表于 2016-1-20 21:27:01 | 显示全部楼层
 
我也不知道了~~你把我问蒙了 呵呵
 
wwzcdenleclv 发表于 2016-2-25 12:39:35 | 显示全部楼层
 
我也不知道了~~你把我问蒙了 呵呵
 
GoodyFouppy 发表于 2016-2-25 12:39:44 | 显示全部楼层
 
挨骂也是幸福~~~
 
tohme 发表于 2016-2-25 12:39:46 | 显示全部楼层
 
看你快沉底了~~~~~~
 
alapScady 发表于 2016-2-25 12:39:51 | 显示全部楼层
 
对于这种刚发的帖子,我总是毫不犹豫的顶了。如果火了就是个前排,可以混个脸熟,说不定谁好心就给粉了…稳赚不赔;如果沉了就感觉是我弄沉的,很有成就感,还能捞经验。
 
seazvyt 发表于 2016-2-25 12:40:12 | 显示全部楼层
 
这是怎么了啊??
 
buingeEvineus 发表于 2017-4-11 15:58:03 | 显示全部楼层
 
晕倒`````不要造我的谣言哦~~小心我打你pp~~嘿嘿~~~~
 
buingeEvineus 发表于 2017-4-11 16:03:03 | 显示全部楼层
 
我帮不了你
 
GoodyFouppy 发表于 2017-4-11 16:04:32 | 显示全部楼层
 
刚才游戏去了 ~~嘿嘿~~
 
wwdu926a 发表于 2017-4-11 16:04:58 | 显示全部楼层
 
什么啊
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

1粉丝

2503帖子

热门图文
热门帖子
排行榜
作者专栏

关注我们:微信订阅号

官方微信

APP下载

全国服务Q Q:

956130084

中国·湖北

Email:956130084@qq.com

Copyright   ©2015-2022  站长技术交流论坛|互联网技术交流平台Powered by©Discuz!技术支持:得知网络  

鄂公网安备 42018502006730号

  ( 鄂ICP备15006301号-5 )