vue可编辑div

发布时间:2025-05-11 03:13

JavaScript前端框架:React或Vue的入门 #生活知识# #编程教程#

最新推荐文章于 2025-03-12 12:23:36 发布

无无无所谓 于 2021-01-16 14:16:34 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

要实现的功能:

1、输入的HTML标签、js代码,不被解析,正常显示;

2、富文本编辑的要正常显示效果;

3、可支持换行,禁止换行;

4、只粘贴纯文本;

效果:

支持换行的

不支持换行的

使用:

// 组件调用

组件代码:

v-html="innerText"

:placeholder="placeholder"

:contenteditable="canEdit"

@keydown.13="keyDown($event)"

@focus="isLocked = true"

@blur="isLocked = false"

@input="changeText">

export default{

name: 'v-edit-div',

props: {

value: {

type: String,

default: ''

},

placeholder: {

type: String,

default: ''

},

canEdit: {

type: Boolean,

default: true

},

//禁止换行

nowrap: {

type: Boolean,

default: false

}

},

data(){

return {

innerText: this.value,

isLocked: false

}

},

watch: {

'value'(){

if (!this.isLocked && !this.innerText) {

this.innerText = this.value;

}

}

},

methods: {

changeText(){

// 解决:末尾换行,看不见的
,删不掉,造成清空无法出现placeholder文字

if(this.$el.innerHTML=="
"){

this.$el.innerHTML="";

}

this.$emit('input', this.$el.innerHTML);

},

keyDown(e){

console.log("回车键按下--nowrap--value:",this.nowrap)

if(this.nowrap){

e.preventDefault();

}

}

}

}

.edit-div {

width: 100%;

height: 100%;

overflow: auto;

word-break: break-all;

outline: none;

user-select: text;

white-space: pre-wrap;

text-align: left;

}

.edit-div[contenteditable=true]{

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

-webkit-user-modify: read-write-plaintext-only;

}

.edit-div[contenteditable=true]:empty:before {

content: attr(placeholder);

display: block;

color: #ccc;

}

新问题:

ios端失去焦点,键盘不隐藏

网址:vue可编辑div https://www.yuejiaxmz.com/news/view/953164

相关内容

vue
TypeScript在Vue中的应用
vue如何制作照片墙
vue组件中是否可以访问实例data中数据?
用div的contenteditable = true做文本编辑器 光标的设置方法
Vue中 let
Vue商城实战全解析:从入门到精通,一步步打造高效购物平台
vue技巧
vue中css样式管理
vue&Element

随便看看