

如何设置DIV可编辑
source link: http://www.fly63.com/article/detial/10583
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何让一个div变成可编辑状态,比如富文本的输入框就可以用可编辑的div(自定义一个富文本时可用),类似textare。有2种方案可以实现:1是通过contenteditable属性设置为true,2是利用css的user-modify属性。
方案一:contenteditable属性
<div id="add-content" contenteditable="true">这里可以编辑</div>
contenteditable 属性是 html5 中的新属性,contenteditable 属性规定元素内容是否可编辑。
注释:如果元素未设置 contenteditable 属性,那么元素会从其父元素继承该属性。
js操作:
监听事件keydown 、textInput 、input
<script>
var content = document.getElementById('add-content')
//注册中文的输入事件,
var isCN = false;
content.addEventListener('compositionstart',function(){
isCN = true;
});
content.addEventListener('compositionend',function(){
isCN = false;
})
//注册文本输入事件,获取光标的起止偏移数据,如果是非中文以及超出长度的输入,则撤销本次操作
var txtAnchorOffset, txtFocusOffset;
content.addEventListener("textInput",function(event){
var _sel = document.getSelection();
txtAnchorOffset = _sel.anchorOffset;
txtFocusOffset = _sel.focusOffset;
//必须加上isCN的判断,否则获取不到正确的光标数据
if(!isCN && this.textContent.length >= noteMax){
event.preventDefault();
}
});
//注册粘贴事件,获取粘贴数据的长度
var pastedLength;
content.addEventListener("paste",function(event){
if(!event.clipboardData) return;
pastedLength = event.clipboardData.getData('Text').length;
});
//注册输入事件,对输入的数据进行
content.addEventListener("input",function(event){
setTimeout(function(){
if(!isCN){
var _this = content;
if(_this.textContent.length > noteMax){
var data = _this.textContent;
if(pastedLength > 1){
oldDate = data.slice(0, txtAnchorOffset) + data.slice(txtFocusOffset+pastedLength, data.length);
//粘贴字符串长度置为0,以免影响到下一次判断。
pastedLength = 0;
} else {
oldDate = data.slice(0, txtAnchorOffset) + data.slice(txtFocusOffset, data.length);
}
//再次截取最大长度字符串,防止溢出
_this.textContent = oldDate.slice(0, noteMax);
//光标移动到起始偏移位置
document.getSelection().collapse(_this.firstChild, txtAnchorOffset);47 }
}
}, 0);
//content.focus();
});
</script>
方案二:css中user-modify属性
<div id="add-content" >这里可以编辑</div>
<style>
#add-content{
user-modify: read-write;
-webkit-user-modify: read-write;
}
</style>
user-modify属性,用来控制用户能否对页面文本进行编辑。与标签的contentEditable属性类似。语法如下:
user-modify: read-only | read-write | read-write-plaintext-only
参数说明:
Recommend
-
51
-
22
关闭 ...
-
8
基因编辑如何影响人类 WinterIsComing (31822)发表于 2021年05月06日 21时51分 星...
-
5
编辑导语:设计师在面对页面编辑的一些设计时,会更注重用户体验方面的细节,因为用户在编辑页面时会遇到很多问题,这时怎么让用户能顺利的完成编辑是非常重要的;本文作者分享了关于页面编辑的细节,我们一起来了解一下。
-
16
Clover Configurator 5.17.3.0 & 设置小技巧(黑苹果EFI引导编辑利器)_Mac软件_IT密码Clover Configurator是一款图形化的四叶草启动引导配置工具,Clover Configurator可以让大家在Mac下非常方便地编辑设置Clover的各个选项,非常实用的免费软件。下...
-
4
V2EX › git github 如何设置一个 pr 可以被 maintainer 设置编辑修改权限? chinafengzhao
-
3
如何设置 input 框为不可编辑状态 (四种方法)发布于 8 月 23 日方法 一 : readonly 规定输入字段为只读可复制,但是,用户可以使用Tab键切...
-
6
WP如何禁用小工具区块编辑模式 WordPress5.8版本开始禁止小工具区块编辑模式方法 202...
-
6
flex div如何右对齐 2022年五月 一 二 三...
-
4
Mac wps 设置编辑的用户名 2023-11-20 software
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK