`
abruzzi
  • 浏览: 452771 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

可编辑表格(table)的一个实现

阅读更多

写了好几篇关于表格的操作的JS脚本设计了,倒不是说我个人有表格情结,实在是日常工作中表格用的地方太多,但是又由于表格本身不太好操作,所以用JS脚本化一下,还是比较有必要的。

把前一段时间做的一个表格编辑的脚本整理了一下,拿出来跟大家共享一下,按照惯例,先看效果图,然后贴代码,然后分析代码。



 单击表格中的一个cell进入编辑状态,在这个实现中,选中的cell会被一个红框括起来,在编辑完成后,恢复表格本身的视图,如下图:



 可以看到,第四行,第3列的ISN由小写字母修改为大写字母了。代码还是比较简单的,如下:

function editCell(event){
	var currentCell;
	
	if(event == null){
		currentCell = window.event.srcElement;
	}else{
		currentCell = event.target;	
	}
	
	if(currentCell.tagName.toLowerCase() == "td"){
		var input = document.createElement("input");
        input.type = 'text';
        input.setAttribute('class', 'editable');
        input.value = currentCell.innerHTML;
        input.width = currentCell.style.width;
        
        input.onblur = function(){
            currentCell.innerHTML = input.value;
            //currentCell.removeChild(input);
        };
        input.onkeydown = function(event){
            if(event.keyCode == 13){
                input.blur();
            }
        };

        currentCell.innerHTML = '';
        currentCell.appendChild(input);
        input.focus();
	}	
}


 在onBlur(失焦)事件时,本来打算删除这个临时创建的Input,但是FF老是报错,暂时注释掉,如果你有更好的解决方法,请告诉我,谢谢。

使用方式,只需要在table加载完成之后,我们就可以给它注册一个编辑器(Editor)。

<script type="text/javascript">
	function setToEditable(tableid){
		document.getElementById(tableid).ondblclick=editCell;	
	}
</script>
 
<body onload="setToEditable('editable')">

 这样就可以了,下面是代码的简单解释:

  1. 如果鼠标当前点击的是table,则触发一个event,浏览器的DOM解析器会知道点击的是什么位置,我们只关注点击的是td的情况(cell)
  2. 创建一个临时的input框
  3. 将cell中的内容复制给Input
  4. 给这个Input注册一些时间处理函数,onblur,onkeydown等以便处理我们的动作
  5. 将input控件添加到cell的儿子节点上,然后设置焦点

P.S

本来以为,如果一切都按照W3C标准来开发的话,跨浏览器就是一件很容易的事,然而,当使用了M$的IE浏览器之后才知道,事情不是这样的,理想和现实是有差距的。这个脚本在IE下竟然不能正确work(红框狂不见了),如果你有好的解决方案,请告诉我,谢谢!

  • 大小: 13.9 KB
  • 大小: 13.7 KB
  • editable.zip (1.8 KB)
  • 描述: 简单的示例
  • 下载次数: 454
分享到:
评论
3 楼 512868516 2013-03-29  
怎么获取重新编辑好的td的值呢?
2 楼 netmaomao 2013-02-15  
数据没法取,取出的是Input的代码,而不是值哦
1 楼 edust 2012-02-26  
谢谢你
我偷偷拿这个去用了!

IE和FF下要改Class的样式
请将     input.setAttribute('class', 'editable');
改为     input.className = 'editable';
是className 属性,而不是 class
 

数据的遍历获取你没写呢!

相关推荐

    bootstrap插件_table可编辑表格_demo

    在Bootstrap中,表格(Table)是常见的数据展示组件,而“bootstrap插件_table可编辑表格_demo”则是Bootstrap表格功能的一个扩展,它允许用户直接在表格内进行编辑,提供了更加交互式的用户体验。 Bootstrap表格的...

    js+html实现的Table可编辑

    在实现可编辑表格时,我们需要在用户点击单元格时将`&lt;td&gt;`元素替换为`&lt;input&gt;`或`&lt;textarea&gt;`,并在用户完成编辑后将数据保存回`&lt;td&gt;`。这可能涉及到`innerHTML`属性、`createElement`、`appendChild`等方法。 4. *...

    纯js和html可编辑的table(表格)

    综上所述,"纯js和html可编辑的table(表格)"项目结合了HTML的结构、JavaScript的交互性以及CSS的美化,实现了用户可以直接在网页上编辑表格的功能。这不仅可以提高用户体验,也简化了数据输入和管理的流程。通过...

    jquery将table表格变成可编辑

    这个简单的示例展示了如何使用jQuery实现基本的可编辑表格功能。实际应用中,可能还需要考虑更多细节,比如输入验证、多列同时编辑、键盘快捷键支持等。同时,为了提供更好的用户体验,可以考虑使用插件如`jQuery...

    vue+iview 实现可编辑表格的示例代码

    先简单说明一下,这个Demo...IViewEditTable ## vue+iview 实现的可编辑表格 └── index.html ## 首页 └── js └── editTable.js ## 首页JS └── ivew ## iview相关 └── vue ├── axios.min.js ## a

    HTML table表格编辑器

    至于"200411822562825089.jpg",这可能是一个示例图像,展示了编辑器的界面或功能,帮助用户更好地理解如何操作和使用这个工具。 总结来说,"HTML Table表格编辑器"是一款提高HTML表格操作效率的工具,它通过...

    jQuery实现可编辑表格

    总结一下,jQuery实现可编辑表格主要涉及以下步骤: 1. 创建带有输入框的HTML表格结构。 2. 使用CSS定制样式,使输入框融入表格。 3. 使用jQuery监听事件,实现表格单元格的编辑和保存功能。 这个简单的示例展示了...

    【JavaScript源代码】vue 中使用 vxe-table 制作可编辑表格的使用过程.docx

    本文将详细介绍如何使用`vxe-table`库来创建一个高效的可编辑表格,以解决类似的问题。 首先,`vxe-table`是一个功能强大的表格组件,相比Element UI的`el-table`,它提供了更多高级特性,如动态渲染、高性能以及...

    JS实现可编辑的表格

    例如,Handsontable 是一个强大的JavaScript表格组件,它可以轻松实现可编辑表格,并且提供了丰富的配置选项。使用Handsontable,你可以这样创建一个可编辑表格: ```javascript // 导入Handsontable库 import ...

    JQuery实现可编辑的表格

    通过以上步骤,我们可以构建出一个功能完善的、基于jQuery的可编辑表格。需要注意的是,虽然jQuery简化了许多任务,但现代前端框架如React、Vue或Angular提供了更强大的状态管理和组件化功能,可能更适合处理复杂的...

    HTML5可编辑Table

    jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和动画效果等任务,使得开发者可以更轻松地实现这些功能。 例如,使用jQuery可以监听单元格的`blur`事件,当用户离开单元格时保存编辑的内容: ```...

    SWT Table单元格编辑功能

    当单元格被选中后,我们需创建一个新的文本框`Text`作为编辑器,并将其显示在被选中的单元格位置。同时,为确保编辑器能够响应用户的输入,我们需为其添加修改监听器: ```java tablePrice.addSelectionListener...

    使用JQuery实现的动态编辑表格

    本人前端小白,因为项目需求,需要动态编辑表格,但是layui的编辑表格只适合 【有数据】修改功能用,并不适合【无数据】新增的功能使用,所以本人研究了几日,才写出了这么一个 无数据绑定,当然也可以自行绑定数据...

    bootstrap table编辑表格所需文件

    Bootstrap Table 是一个基于Bootstrap框架的前端组件,用于创建功能丰富的、响应式的表格。在默认情况下,Bootstrap Table 并不支持直接在表格内编辑数据。为了实现这个功能,我们需要借助第三方插件,比如`...

    前端模拟实现可编辑的表格table插件

    通过以上步骤,你可以构建出一个基本的前端可编辑表格插件。随着需求的增加,可以继续扩展其功能,如添加行和列的操作、导入导出数据等。在实际项目中,记得考虑兼容性和无障碍性,确保所有用户都能顺利使用。同时,...

    javascript将html的table变为可编辑表格

    结合以上代码,你可以创建一个完整的可编辑表格。在提供的`edittable`文件中,可能包含了一个示例HTML文件和对应的JavaScript文件,演示了上述功能的完整实现。通过查看和运行这些示例,开发者可以更直观地理解如何...

    基于jquery的可编辑表格实现代码

    本示例“基于jquery的可编辑表格实现代码”是关于如何利用jQuery创建一个功能丰富的交互式表格,允许用户双击单元格(TD元素)进行编辑,编辑完成后,数据会自动更新回原单元格。以下将详细介绍这一技术实现的关键...

    table表格样式利用jqgrid实现

    在网页开发中,表格(Table)是展示数据的重要方式,而jqGrid是一个强大的JavaScript库,专门用于创建交互式、功能丰富的表格。本教程将深入探讨如何利用jqGrid来实现美观且功能丰富的表格样式。 首先,我们需要...

    Vue封装的可编辑表格插件方法

    在本文中,我们将详细解析如何使用Vue.js框架封装一个可编辑的表格插件。该插件允许用户在表格中进行单元格编辑,并能对表头进行任意合并,从而提供了强大的表格数据处理功能。 首先,我们需要了解该插件的基本结构...

    Iview 表格编辑

    例如,我们可以这样配置一个可编辑的列: ```javascript { title: '姓名', key: 'name', editable: true // 或者 editable: (row, index) =&gt; { return true; } } ``` 接下来,我们关注动态编辑的核心部分。在...

Global site tag (gtag.js) - Google Analytics