Vue 3 自定义多行文本输入组件

本文介绍了如何在Vue3项目中创建一个可配置的多行文本输入组件,包含自动高度调整、禁用功能、大写转换以及处理失焦、输入和粘贴事件的详细实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Vue 3项目中,我们经常需要创建自定义的UI组件,以满足特定的业务需求。本篇博客将介绍一个基于Vue 3的自定义多行文本输入组件,该组件具有灵活的配置选项和一些特定的功能,使其适用于各种场景。

组件结构

首先,让我们来看一下这个自定义组件的基本结构:

<template>
  <div
    class="input-count-container"
    :class="`${disabled ? 'is-disabled' : ''}`"
    :style="`height: ${height}; width: ${width}`">
    <div
      ref="displayContentRef"
      class="content-wrapper"
      v-html="displayContent"
      :contenteditable="!disabled"
      @blur="onDisplayContentBlur"
      @input="onDisplayContentInput"></div>
  </div>
</template>

<script setup lang="ts">
// 省略了引入部分

const emits = defineEmits(['update:modelValue', 'addressInputs']);
const props = defineProps({
  modelValue: {
    default: ''
  },
  disabled: {
    type: Boolean,
    default: false
  },
  height: {
    type: String,
    default: '100px'
  },
  upperCase: {
    type: Boolean,
    default: false
  },
  width: {
    type: String,
    default: '15vw'
  }
});
const displayContentRef = ref();
const displayContent = ref('');

// 省略了其他变量和方法的声明
</script>

<style scoped lang="scss">
// 省略了样式部分
</style>

主要特性

  1. 支持自动高度调整,可以设置固定的高度或百分比高度。
  2. 可以禁用输入,添加 .is-disabled 类来显示禁用状态。
  3. 可以转换输入为大写字母形式。
  4. 支持设置组件的宽度。

组件功能

失焦事件处理

const onDisplayContentBlur = (event) => {
  const $displayContent = displayContentRef.value;

  let updateContent = $displayContent.innerText.replace(/\n\n/gi, '\n');

  if (props.upperCase) {
    updateContent = updateContent.toUpperCase();
  }

  emits('update:modelValue', updateContent);
};

在失焦事件处理中,我们对文本进行了一些处理,去除了多余的换行符,并且根据配置将文本转换为大写形式。

输入事件处理

const onDisplayContentInput 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值