contenteditable 元素删掉所有内容后再输入内容,v-model变量不能监听内容变化

文章讲述了在HTML中使用contenteditable属性时遇到的问题,即当元素内容被清空后,Vue的v-model无法监听到内容变化。解决方案是改用v-html来绑定元素内容。此外,还介绍了如何在编辑时手动设置光标聚焦的位置,涉及window.getSelection()和range对象的使用。
摘要由CSDN通过智能技术生成

contenteditable 属性规定元素内容是否可编辑(元素会从其父元素继承该属性。)

         true: 可以编辑   

         false: 不可编辑

问题:

<span class="textEdit" @blur="textBlur(index, $event)" @dblclick.stop="dbEditText(index, $event)" >{{item.text}}</span>

 contenteditable 属性true元素删掉所有内容后再输入内容,v-model变量不能监听内容变化

           解决:用v-html绑定元素内容

<span class="textEdit" @blur="textBlur(index, $event)" @dblclick.stop="dbEditText(index, $event)" v-html="item.text"/>

元素编辑时手动修改光标聚焦位置:

           dom.setAttribute('contenteditable', true)

           dom.focus()  // 元素聚焦

           const range = window.getSelection() // 创建range

            if (range) {

                 // range 选择obj下所有子内容

                  range.selectAllChildren(dom)

                 // 光标聚焦在文字最后

                  range.collapseToEnd()

             }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值