Skip to content

背景

使用 Element Plus 组件库的 Input 输入框时,如果同时设置 type="textareaclearable,clearable 不会起作用

首先我想到的方法是 #suffix 插槽解决,但是这个插槽也是针对 input 的,textarea 也不会生效

实现方案

使用组件库自带的 Icon 组件,使用定位的方式,将图标放在文本域中。同时实现清空方法。调整样式实现原生效果

代码参考:

vue
<template>
  <el-form-item label="投票内容" prop="content" class="textarea-wrap">
    <el-input
      v-model="form.content"
      type="textarea"
      maxlength="1000"
      placeholder="请输入详细投票内容"
      show-word-limit
      word-limit-position="outside"
    />
    <el-icon v-if="form.content" class="textarea-clear" @click="clearContent">
      <CircleClose/>
    </el-icon>
  </el-form-item>
</template>

<script setup lang="ts">
const clearContent = () => {
  form.content = ''
}
</script>

<style lang="scss" scoped>
.textarea-wrap {
  position: relative;

  .textarea-clear {
    position: absolute;
    right: 10px;
    top: 10px;
    color: #91949a;
    opacity: 0;
    cursor: pointer;
  }

  &:hover .textarea-clear {
    opacity: 1;
  }

  &:focus-within .textarea-clear {
    opacity: 1;
  }
}
</style>

效果如图:

如有转载请标注本站地址