Skip to content

Textarea 文本域 ​

用于输入较长文本内容,适合意见反馈、备注说明、评论回复等多行编辑场景。

交互式调试 ​

🔧调试模式Playground

基础用法 ​

vue
<script setup lang="ts">
import { ref } from 'vue'

const content = ref('')
</script>

<template>
  <lk-textarea v-model="content" placeholder="请输入内容" />
</template>

风格变体 ​

组件内置 outline、filled、flush 三种视觉风格。

vue
<template>
  <lk-textarea placeholder="默认描边" variant="outline" />
  <lk-textarea placeholder="填充风格" variant="filled" />
  <lk-textarea placeholder="无边框列表态" variant="flush" />
</template>

自动增高与字数统计 ​

vue
<script setup lang="ts">
import { ref } from 'vue'

const bio = ref('')
</script>

<template>
  <lk-textarea
    v-model="bio"
    auto-height
    :maxlength="200"
    show-count
    placeholder="请输入个人简介"
  />
</template>

清空按钮与底部扩展区 ​

通过 clearable 提供快捷清空;通过 footer 和 suffix 插槽扩展底部辅助操作与右侧区域。

vue
<template>
  <lk-textarea clearable placeholder="写评论...">
    <template #suffix>
      <lk-icon name="emoji-smile" />
    </template>

    <template #footer>
      <view class="quick-tags">
        <text>#推荐</text>
        <text>#好评</text>
      </view>
    </template>
  </lk-textarea>
</template>

与表单联动 ​

传入与 lk-form-item 一致的 prop,可在失焦或清空时联动表单校验。

vue
<template>
  <lk-form :model="form" :rules="rules">
    <lk-form-item label="备注" prop="remark">
      <lk-textarea v-model="form.remark" prop="remark" show-count :maxlength="100" />
    </lk-form-item>
  </lk-form>
</template>

键盘与光标控制 ​

vue
<template>
  <lk-textarea
    v-model="content"
    focus
    confirm-type="done"
    :confirm-hold="false"
    :cursor-spacing="24"
    :selection-start="0"
    :selection-end="6"
    @confirm="event => console.log(event.detail?.value)"
    @keyboardheightchange="event => console.log(event.detail)"
    @linechange="event => console.log(event.detail?.lineCount)"
  />
</template>

推荐示例 ​

1) 直接复用项目 Demo(推荐) ​

vue
<script setup lang="ts">
import TextareaDemo from '@/components/demos/textarea-demo.vue'
</script>

<template>
  <TextareaDemo />
</template>

2) 在业务页中按需组合 ​

vue
<template>
  <view class="page-demo">
    <lk-textarea />
  </view>
</template>

API ​

Props ​

参数说明类型可选值默认值
modelValue绑定值,支持 v-modelstring—''
label顶部标签文本string—''
placeholder占位内容string—请输入内容
placeholderStyle占位符样式string—''
placeholderClass占位样式类名string—lk-textarea__placeholder
name原生表单字段名string—''
variant风格变体stringoutline / filled / flushoutline
disabled是否禁用boolean—false
readonly是否只读,只读时禁用原生输入与清空boolean—false
maxlength最大输入长度,-1 表示不限制number—-1
autoHeight是否自动增高boolean—false
showCount是否显示字数统计boolean—false
clearable是否显示清空按钮boolean—false
autofocus首次渲染时是否自动聚焦boolean—false
focus是否聚焦,受控聚焦状态boolean—false
confirmType键盘右下角按钮文字stringsend / search / next / go / done / returnreturn
confirmHold点击键盘右下角按钮时是否保持键盘不收起boolean—false
adjustPosition键盘弹起时是否自动上推页面boolean—true
cursorSpacing光标与键盘距离,单位 pxnumber—0
cursor指定聚焦时的光标位置number—-1
selectionStart光标起始位置,需与 selectionEnd 搭配使用number—-1
selectionEnd光标结束位置,需与 selectionStart 搭配使用number—-1
fixed是否展示在键盘上方boolean—false
showConfirmBar是否显示键盘上方完成栏boolean—true
disableDefaultPadding是否去掉 iOS 默认内边距boolean—true
holdKeyboard聚焦时点击页面是否保持键盘不收起boolean—false
autoBlur键盘收起时是否自动失焦boolean—false
inputmodeH5/App 输入模式提示stringnone / text / decimal / numeric / tel / search / email / urltext
ignoreCompositionEvent是否忽略系统组合输入事件boolean—true
prop表单字段名string—''
validateEvent是否触发表单验证联动boolean—true
id根节点 idstring—''
customClass自定义类名string / object / array—''
customStyle自定义样式string / object—''

Events ​

事件名说明回调参数
update:modelValue输入值变化时触发,用于 v-model(value: string)
input键盘输入时触发(value: string)
change失焦或清空后的最终值变化(value: string)
focus聚焦时触发(event: Event)
blur失焦时触发(event: Event)
confirm点击键盘确认按钮时触发(event: Event)
clear点击清空按钮时触发()
linechange行数变化时触发,event.detail 含 height / heightRpx / lineCount(event: Event)
keyboardheightchange键盘高度变化时触发,event.detail 含 height / duration(event: Event)
compositionstart组合输入开始时触发(event: Event)
compositionupdate组合输入更新时触发(event: Event)
compositionend组合输入结束时触发(event: Event)

Slots ​

插槽名说明
suffix右侧扩展区域,常用于表情、附件按钮
footer底部扩展区域,位于计数左侧

使用建议 ​

TIP

如果是短文本输入,优先使用 lk-input;只有在内容可能换行时再使用 lk-textarea。

WARNING

linechange、keyboardheightchange、showConfirmBar、inputmode 等能力存在平台差异,请以 UniApp 当前运行端的原生 textarea 能力为准。

基于 MIT 协议开源

Textarea 文本域

正在连接预览服务...

请先运行 pnpm run dev:h5