当前位置:网站首页>contentEditable属性
contentEditable属性
2022-08-01 23:48:00 【前端码农小王】
前言
我们最常用的输入文本内容便是input与textarea,但是有一个属性,可以让我们在很多标签中,如div,table,p,span,body等,可以像input输入框一样,实现文本编辑,这便是contentEditable属性
contentEditable属性
微软开发,被其他浏览器反编译并且投入应用的一个全局属性
该属性的功能是允许用户编辑元素中的内容//所以这个元素必须是可以获得鼠标焦点的元素,并且在点击鼠标后要向用户提供一个插入符号,提示可编辑
contenteditable=“true” #开启文本编辑
contenteditable=“false” #关闭文本编辑,该字段的值缺失时,效果和这个是一样的
contenteditable=“inherit” #(默认)表明该元素继承了其父元素的可编辑状态
下图属性一览,部分属性值存在兼容性 developer.mozilla.org/zh-CN/docs/…

兼容性
基本上完美支持市面上浏览器,即使刚刚退役的IE浏览器

使用
1、只需要在标签上contentEditable为true,即可实现编辑
这是一个段落。是可编辑的。尝试修改文本。
2、contenteditable="inherit"的使用
<div contenteditable="true">
<p>这是一个子段落</p>
<p>这是一个子段落</p>
</div>
项目中
在项目中,总是需要文本显示与文本编辑,通常的做法是文本标签+input
如:在vue中
如果我们使用contenteditable,就不再需要input输入框
[代码片段](https://code.juejin.cn/pen/7111225356530483236)
那么,问题来了,如何保存数据?
通过失焦事件blur
<div id="divInput" class="txt" contenteditable="true">
<p>这是一个子段落</p>
<p>这是一个子段落</p>
</div>
JS
var divInput = document.getElementById("divInput");
divInput.addEventListener("blur", function (event) {
console.log("div失去焦点2222---", event, event.target);
});

如果是在vue项目中,对标签设置了contenteditable为true,相应的添加失焦事件,然后再用$set改变就可以
<div class="count">
<div contenteditable="true"
v-for="(n, index) in list" :key="n"
@blur="handleBlur(index, $event)">{
{n}}</div>
</div>
export default {
data() {
return {
list: ['这是1', '这是2', '这是3']
};
},
methods: {
handleBlur(index, event) {
this.$set(this.list, index, event.target.innerText);
console.log(this.list);
},
},
};
代码片段
边栏推荐
- cmd command
- 尚硅谷MySQL学习笔记
- Flink学习第四天——完成第一个Flink 流批一体案例
- recursion: method calls itself
- Dynamic Scene Deblurring with Parameter Selective Sharing and Nested Skip Connections
- Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
- Always use "noopener" or "noreferrer" for links that open in a new tab
- Check if point is inside rectangle
- 正则表达式
- [LeetCode304周赛] 两道关于基环树的题 6134. 找到离给定两个节点最近的节点,6135. 图中的最长环
猜你喜欢
Building a cloud-native DevOps environment
在CDH的hue上的oozie出现,提交 Coordinator My Schedule 时出错
【C语言进阶】文件操作(二)
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
C language - branch statement and loop statement
Use Jenkins for continuous integration, this knowledge point must be mastered
技术分享 | 接口测试中如何使用Json 来进行数据交互 ?
UI自动化测试框架搭建-标记性能较差用例
Data Organization --- Chapter 5 Trees and Binary Trees --- The Concept of Binary Trees --- Application Questions
很多人喜欢用多御安全浏览器,竟是因为这些原因
随机推荐
月薪12K,蝶变向新,勇往直前—她通过转行测试实现月薪翻倍~
软件测试之移动APP安全测试简析,北京第三方软件检测机构分享
problem solved
CDH6 Hue to open a "ASCII" codec can 't encode characters
Flink学习第五天——Flink可视化控制台依赖配置和界面介绍
20220725资料更新
ansible模块--copy模块
cdh6打开oozieWeb页面,Oozie web console is disabled.
DOM 基础操作
尚硅谷MySQL学习笔记
oozie startup error on cdh's hue, Cannot allocate containers as requested resource is greater than maximum allowed
Docker实践经验:Docker 上部署 mysql8 主从复制
@Transactional 注解使用详解
在CentOS下安装MySQL
Access the selected node in the console
6133. Maximum number of packets
Several interview questions about golang concurrency
yay 报错 response decoding failed: invalid character ‘<‘ looking for beginning of value;
辛普森悖论
切面打印调取的方法