背景
使用 Element Plus 组件库的 Input 输入框时,如果同时设置 type="textarea 和 clearable,clearable 不会起作用
首先我想到的方法是 #suffix 插槽解决,但是这个插槽也是针对 input 的,textarea 也不会生效
实现方案
使用组件库自带的 Icon 组件,使用定位的方式,将图标放在文本域中。同时实现清空方法。调整样式实现原生效果
代码参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <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>
|
效果如图:
