得知互动

标题: 基于jquery制作可编辑的表格特效 [打印本页]

作者: swmozowtfl    时间: 2015-7-15 20:24
标题: 基于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);
}
想比较来说,个人更喜欢第二种一些,小伙伴们是什么意见呢,欢迎留言给我。

更多网页制作信息请查看: 网页制作
作者: Acropozelan    时间: 2016-1-20 21:26
我怎么就踩不死你呢??
作者: mwxny    时间: 2016-1-20 21:26
哈哈 ok ~~~
作者: alapScady    时间: 2016-1-20 21:26
想骂你.却不知道从何骂起.
作者: Acropozelan    时间: 2016-1-20 21:27
我也不知道了~~你把我问蒙了 呵呵
作者: wwzcdenleclv    时间: 2016-2-25 12:39
我也不知道了~~你把我问蒙了 呵呵
作者: GoodyFouppy    时间: 2016-2-25 12:39
挨骂也是幸福~~~
作者: tohme    时间: 2016-2-25 12:39
看你快沉底了~~~~~~
作者: alapScady    时间: 2016-2-25 12:39
对于这种刚发的帖子,我总是毫不犹豫的顶了。如果火了就是个前排,可以混个脸熟,说不定谁好心就给粉了…稳赚不赔;如果沉了就感觉是我弄沉的,很有成就感,还能捞经验。
作者: seazvyt    时间: 2016-2-25 12:40
这是怎么了啊??
作者: buingeEvineus    时间: 2017-4-11 15:58
晕倒`````不要造我的谣言哦~~小心我打你pp~~嘿嘿~~~~
作者: buingeEvineus    时间: 2017-4-11 16:03
我帮不了你
作者: GoodyFouppy    时间: 2017-4-11 16:04
刚才游戏去了 ~~嘿嘿~~
作者: wwdu926a    时间: 2017-4-11 16:04
什么啊




欢迎光临 得知互动 (https://bbs.dezhifl.com/) Powered by Discuz! X3.4