「来源: |web前端开发 ID:web_qdkf」

如何让一个div变成可编辑状态,比如富文本的输入框就可以用可编辑的div(自定义一个富文本时可用),类似textare。

有2种方案可以实现:1是通过contenteditable属性设置为true,2是利用css的user-modify属性。

方案一:contenteditable属性

这里可以编辑

contenteditable 属性是 html5 中的新属性,contenteditable 属性规定元素内容是否可编辑。

注释:如果元素未设置 contenteditable 属性,那么元素会从其父元素继承该属性。

js操作:

监听事件keydown 、textInput 、input

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(); });

方案二:css中user-modify属性

这里可以编辑

user-modify属性,用来控制用户能否对页面文本进行编辑。与标签的contentEditable属性类似。语法如下:

user-modify: read-only | read-write | read-write-plaintext-only

参数说明:

学习更多技能

举报/反馈

css 可编辑,如何设置DIV可编辑相关推荐

  1. css设置div不可编辑,css 怎么设置div不可点击

    css设置div不可点击的方法:1.通过"event.preventDefault()"方法取消事件的默认动作:2.通过"event.stopPropagation()& ...

  2. html设置颜色框的宽高,CSS如何怎么设置div边框颜色宽度和高度

    1.首先,您需要创建一个div,对div进行添加一个class.我们利用CSS通过class来设置div的边框. 2.创建一个用于设置边框的CSS文件,对于您实际开发中,将边框添加到您的CSS文件中即 ...

  3. html 给div设置高度,div高度设置 DIV 高度篇

    DIV 高度教程-DIV的高度设置篇 如何对div设置高度呢?答案很简单 使用css height样式即可设置div高度. div的高度图 我们要对div对象设置高度样式,一般分为设置固定高度,最小高 ...

  4. css不可修改,css怎么设置text不可编辑

    css设置text不可编辑的方法:1.通过"οnfοcus=this.blur()"方法设置text不可编辑:2.使用readonly属性设置输入字段为只读:3.使用disable ...

  5. html div 不可编辑状态,HTML contenteditable属性

    前言 之前一直没有留意到有contenteditable这个属性,今天突然看到特意记录一下它的 用法 和 实际用途 : 用法 为了某个使元素可编辑,你所要做的就是在html标签上设置"con ...

  6. EditorGridPanel的网格样式以及编辑属性设置

    1.添加(设置)单元格样式 function SetMyColumns(value, cell, record, rowIndex, columnIndex, store) {if((columnIn ...

  7. html中不透明度怎么写,css如何设置div不透明度?

    在IE中需要通过"filter"来定义透明度"opacity",而在Mozilla中是可以直接解析"opacity",所以如果要使得这个效果 ...

  8. html页面设置不可点击事件,css怎么设置div不可点击?

    这篇文章介绍的是通过纯CSS实现禁止div的鼠标点击事件,比起Javascript来更加灵活,有需要的可以参考学习. css怎么设置div不可点击? JavaScript有一个preventDefau ...

  9. html设置div页面最底,使用css让大图片不超过网页宽度

    让大图片不超过网页宽度,让图片不撑破通过CSS样式设置的DIV宽度! 接下来,我们来介绍下网站在开发DIV+CSS的时候会遇到一个问题,在发布一个大图片的时候因为图片过宽会撑破自己设置的div宽度的问 ...

最新文章

  1. mysql和mongodb对比互补
  2. websocket 群/单聊 基础
  3. 程序员取名:用大数据分析一下宝宝取名时最容易重复的名字
  4. html中水印影响文字复制,HTML中文字水印的清除方法_HTML教程
  5. [面试] 算法(五)—— 替换字符串中的空格
  6. java实现阴历、阳历互相转换
  7. latex字母/数字双线字体
  8. CRM客户关系管理系统开发第七讲——实现客户管理模块中删除客户的功能
  9. Northwind数据库下载地址
  10. 【26天高效学习Java编程】Day26(完结篇):Java中的单例、多例、枚举以及工厂模式详解
  11. OpenCV获取轮廓最大内接正矩形(C++源码)
  12. java平方根函数_java程序中怎么调用平方根函数
  13. Windows 10 21H1开启关闭卓越模式
  14. 解读数字孪生概念 —— 智慧城市大脑
  15. PS羽化N个像素后填充淡绿色
  16. 总结下macbook 安装win10 双系统丢驱动的问题
  17. robot光线机器人安卓版_RobotMake下载-RobotMake机器人控制软件下载v3.1.5 安卓版-西西软件下载...
  18. iptables实战演练
  19. 【历史上的今天】10 月 26 日:NetBSD 系统发布;Windows 8 诞生;微软推出 Surface 系列
  20. GameNFT深度分析, 打造属于头号玩家的开放世界!

热门文章

  1. linux进行monkey压力测试,App Monkey压力测试(一)
  2. Mysql:替换某个字段中的部分字符串——replace函数
  3. HttpURLConnection, Android访问网络,实用demo
  4. jmeter测试TCP服务器/模拟发送TCP请求
  5. 聊聊并发(四)——深入分析ConcurrentHashMap
  6. 计算机应用基础第五章在线测试答案,计算机应用基础在线测试第五章答案
  7. linux gst qt,【ARM-Linux开发】Gstreamer+QT+摄像头 编程总结
  8. spring 框架(一)
  9. Python网络爬虫之图片懒加载技术、selenium和PhantomJS
  10. RegexDemo6