论坛首页 Web前端技术论坛

JQuery实现可编辑的表格

浏览 18490 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-24  
提示:点击表格后可直接编辑,回车或鼠标点击页面其他地方后编辑生效,按Esc可取消编辑
index.html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>JQuery实现可编辑的表格</title>
    <link href="css/EditTable.css" rel="stylesheet" type="text/css" />
    <script src="js/jquery.js" type="text/javascript"></script>
    <script src="js/EditTable.js" type="text/javascript"></script>
</head>
<body>
    <table>
        <tr>
            <td>123546789</td>
            <td>987654321</td>
        </tr>
    </table>
</body>
</html>

EditTable.css文件
table,td
{
	border:solid 1px black;
    border-collapse:collapse;
}

EditTable.js文件
//相当于在页面中的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;
            }
        });
    });
});
   发表时间:2009-07-27  
提供了一个方法...在扩展完善下就可以用了...嘿嘿
0 请登录后投票
   发表时间:2009-07-29  
怎么做成动态的??
数据可以保存在数据库中的..
0 请登录后投票
   发表时间:2009-07-29  
用JQuery中的Ajax技术把数据提交到服务器端,做相应的处理后就可以保存到数据库中了。
0 请登录后投票
   发表时间:2009-08-07  
多谢你的注释 让初学者能看懂并修改
0 请登录后投票
   发表时间:2009-08-07  
哈哈,以前自已也写过一个!不过感觉不是很好!
这个东西在项目中经常用到的!!
0 请登录后投票
   发表时间:2009-08-08  
嗯,楼主的思路很好,我正打算用哦挂在我的表格控件中
0 请登录后投票
   发表时间:2009-11-28  
楼主不错,注释这么全面,适合我这种jquery新手,多谢了!
0 请登录后投票
   发表时间:2009-11-28  
LZ强,思路很清晰!受教了!
0 请登录后投票
   发表时间:2009-11-30  
好像在出IE浏览器之外的浏览器执行取消操作,它不会保存原来的值
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics