div contenteditable自定义组件

简介: div contenteditable自定义组件
<template>
  <div class="edit-border" @blur="divBlur" @input="divInput" :contenteditable="!disabled" ref="ableRef"></div>
</template>
<script setup>
import { ref, onMounted, nextTick } from 'vue'
/*
    <input-textarea
        v-model:inputValue="value"
        disabled
        maxlength="3000"
        @divInput="divInput"
        @divBlur="divInput"
    >
    </input-textarea>
*/
const props = defineProps({
  inputValue: { type: [Number, String], default: '' },
  disabled: { type: Boolean, default: false },
  maxlength: { type: [Number, String], default: 3000 }
})
const emits = defineEmits(['update:inputValue', 'divBlur', 'divInput'])
const ableRef = ref(null)
function divInput() {
  // 限制输入字数
  if (ableRef.value.innerText.length > props.maxlength) {
    ableRef.value.innerText = ableRef.value.innerText.slice(0, props.maxlength)
    // 调整光标
    ableRef.value.focus()
    document.execCommand('selectAll', false, null)
    document.getSelection().collapseToEnd()
  }
  emits('update:inputValue', ableRef.value.innerText)
  emits('divInput', ableRef.value.innerText)
}
function divBlur() {
  emits('divBlur', ableRef.value.innerText)
}
onMounted(() => {
  nextTick(() => {
    ableRef.value.innerText = props.inputValue
  })
})
</script>
<style lang="scss" scoped>
.edit-border {
  cursor: pointer;
  border: 1px solid #eee;
  padding: 5px;
  border-radius: 4px;
  margin: 10px;
  text-align: left;
}
</style>
目录
相关文章
|
6月前
Vue3文本域(Textarea)
这是一个基于 Vue3 的可自定义文本域组件 (`Textarea`),具备多种实用功能,如自适应内容高度、清除图标、字数统计及禁用状态等。
239 2
Vue3文本域(Textarea)
|
7月前
|
前端开发
css 实用技巧 —— div在div中水平垂直居中(两种方法)
css 实用技巧 —— div在div中水平垂直居中(两种方法)
308 3
|
9月前
|
JavaScript 前端开发
原生js与jQuery显示隐藏div的几种方法
原生js与jQuery显示隐藏div的几种方法
134 0
CSS3自定义checkbox复选框
在线演示 本地下载
784 0
|
前端开发
使用css修改checkbox选择框的样式
二. 修改思路: 给原本的checkbox框加上visibility: hidden;属性,使其隐藏同时又占据原本在页面上面的位置,说直白点就是,使checkbox看不见,但是仍然占有原来的位置。
1887 0
|
前端开发
css如何让div显示在最上层
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80034493 方法:设置div样式 z-index:autoauto可定义为一个值(整数数字),越大代表越置前,如可定义为: z-index:999。
2697 0
|
JavaScript 前端开发 容器
layUI 几个简单的弹出层
导入控件主题 创建容器 也就是包含jsTree控件的元素,一般使用就可以了。 引入jQuery jsTree依赖于jQuery,所以需要引入jQuery: 引入jsTree 部署环境使用压缩版的jsTree.min.js,如果是开发环境可以使用jsTree.js 创建jsTree实例 DOM加载完毕之后,就可以创建jsTree实例对象了。
2462 0
|
JavaScript 前端开发 数据格式

热门文章

最新文章

相关课程

更多