Css+JS模拟实现可编辑的表格
表格在未编辑状态和编辑状态,需要定义两个不同的样式。
比如未编辑状态是lable的样式,两边有两个括号[],表示该表格可以编辑;编辑中的表格则表示成一个input框,可以输入。
基本思路就是,在表格中直接放可输入的input标签,在未编辑的时候,利用css样式,把input标签模拟成不可编辑的lable样式。
实现代码。
CSS
.edit-marker {
position: relative;
}
.edit-marker:before {
position: absolute;
content: '[';
top: 0px;
left: 2px;
}
.edit-marker:after {
position: absolute;
content: ']';
top: 0px;
right: 2px;
}
.edit-marker input,
.edit-marker select {
border-color: transparent;
box-shadow: none;
}
.edit-marker select.input-time {
-moz-appearance: none;
-webkit-appearance: none;
padding-left: 18px;
}
.edit-marker select.input-time::-ms-expand {
display: none;
}
JS
<script>
$(function(){
// 移除样式用的JS
$(".edit-marker input, .edit-marker select").on("focus",function(){
$(this).closest(".edit-marker").attr("marker-container", true).removeClass("edit-marker");
}).on("blur",function(){
$(this).closest("[marker-container]").addClass("edit-marker").removeAttr("marker-container");
}); });
</script>
HTML
<table id="table" class="table table-bordered table-condensed">
<thead>
<tr>
<th>ID</th>
<th><span>Name</span></th>
</tr>
</thead>
<tbody> <tr>
<td>input(td)</td>
<td class="edit-marker">
<input type="text" class="form-control" value="wang" />
</td>
</tr>
<tr>
<td>select(td)</td>
<td class="edit-marker">
<select class="form-control input-sm input-time ">
<option value="1">00:00</option>
<option value="2">00:10</option>
</select>
</td>
</tr>
<tr>
<td>select2(td)</td>
<td class="edit-marker">
<select class="form-control input-sm kyumucombo">
<option value=""></option>
<option value="0901">Item1</option>
<option value="0902">Item2</option>
<option value="0903">Item3</option>
</select>
</td>
</tr>
</tbody>
</table>
※上面用到了bootstrap。使用上,只需在外围的容器(td,div都可以)上加上edit-marker类就行。
实现的效果如下
未编辑状态:

编辑状态:
3.1 普通输入框

3.2 下拉框(初期表示:没有下拉箭头,看起来完全和lable一样)

3.3 下拉框

Css+JS模拟实现可编辑的表格的更多相关文章
- html+css+js 模拟win7桌面
不贴代码了,直接上传附件. 附件下载: win7desktop
- Vue+Mock.js模拟登录和表格的增删改查
有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...
- css配合js模拟的select下拉框
css配合js模拟的select下拉框 <!doctype html> <html> <head> <meta charset="utf-8&quo ...
- 模拟jQuery中的ready方法及实现按需加载css,js实例代码
这篇文章介绍了模拟jQuery中的ready方法及实现按需加载css,js实例代码,有需要的朋友可以参考一下 一.ready函数的实现经常用jQuery类库或其他类库中的ready方法,有时候 ...
- webstorm的live templates快速编辑功能,让你的css JS代码书写速度飞起来
前言: Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码, 大大提高了HTML/CSS代码编写的速度,比如下面 ...
- Gremlins.js – 模拟用户随机操作的 JS 测试库
Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...
- JQuery经典小例子——可编辑的表格
可编辑的表格: 屏幕剪辑的捕获时间: 2015/8/14 9:16 HTML代码为: <!DOCTYPE html> <htmlxmlns="http://www.w3.o ...
- 可编辑的表格:jQuery+PHP实现实时编辑表格字段内容
在本例中,我们会通过jQuery实现单击将一个文本信息变为可编辑的表单,你可以对文本内容进行编辑,然后点击“确定”按钮,新的内容将发送到后台PHP程序处理,并保存到数据库:当点击“取消”按钮,则页面恢 ...
- JQuery实战--可以编辑的表格
廊坊下雪了,15年的第二场雪,比14的来的稍晚一些,停靠在11教门前的自行车,成了廊坊师范学院最美丽的风景线.还记得以前学习css的时候,就曾经接触过如何编写设计一些表格和表单的样式,例如如何设计表格 ...
随机推荐
- Android 如何添加一个apk使模拟器和真机都编译进去 m
添加一个apk都需要将LOCAL_PACKAGE_NAME的值添加到PRODUCT_PACKAGES才行.而PRODUCT_PACKAGES一般在build/target/product/目录下的文件 ...
- [Err] ORA-00911: 无效字符
使用navicat执行从pw中导出的sql语句时报[Err] ORA-00911: 无效字符 这个错误. 经过分析后发现,是因为某个表的id中的类型设置用的中文括号包起来的. 但是不知道为什么sql ...
- 前端表单中有按钮button自动提交表单
问题描述 在设计表单时,表单内有一个按钮<button>,该按钮是用来获取其他数据或执行其他操作的.并不是让他提交表单. 解决方案 1) 设置 form 的 onsubmit='retur ...
- 记一次mysql的存储过程改写
最近在对公司以前的老项目做整理,发现以前同事在程序中许多模块都是多次调用几个分散的存储过程..这样做无疑消耗了连接池的连接数,甚至会导致连接不够的时候创建连接池导致数据库处理的消耗..以及到处调用连接 ...
- 微信小程序 template添加点击事件
介绍template是微信小程序提供的模板,可以在模板中定义代码片段,然后在不同的地方调用. 简单使用定义template因为项目中可能会需要到不止一个template,所以最好新建一个文件夹来存放t ...
- Nginx(七):keepalived实现Nginx负载均衡服务器的双机高可用
前言 之前咱们通过 Nginx(六):Nginx HTTP负载均衡和反向代理的配置与优化 和 Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案 这两篇文章了解了Nginx对高并发应用 ...
- CSS边框闪烁呼吸样式
<html> <body> <head> .arrow_box{animation: glow 800ms ease-out infinite alternate; ...
- Shell脚本大量示例
Shell基础之控制流结构 一.控制结构 几乎所有的脚本里都有某种流控制结构,很少有例外.流控制是什么?假定有一个脚本,包含下列几个命令: #!/bin/sh # make a directory ...
- lua -- string
table.keys 返回指定表格中的所有键. 格式: keys = table.keys(表格对象) 用法示例: , b = , c = } local keys = table.keys(t) - ...
- ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试
1.新建.NET Core web项目 2.Controllers-Models-Views 分三个大部分 3.下载安装最新sdk 官方的SDK以及Demo都还是.NET Framework的,根据官 ...