Skip to content

Input 输入框

输入框(Input)是表单中最基础的元素,用于让用户输入和编辑文本内容。

基础用法

通过 v-model 实现双向绑定,支持 textpasswordemailnumber 等多种 type

vue

<TInput placeholder="请输入内容..."/>
<TInput type="password" placeholder="请输入密码..."/>
<TInput type="number" placeholder="请输入数字..."/>
<TInput type="email" placeholder="email@example.com"/>

尺寸

通过 size 属性控制输入框的尺寸:'lg'(大)、默认(中)、'sm'(小)。

vue

<TInput size="lg" placeholder="大尺寸输入框"/>
<TInput placeholder="默认尺寸输入框"/>
<TInput size="sm" placeholder="小尺寸输入框"/>

样式变体

提供 rounded(圆角)和 flush(无边框)两种变体风格。

vue

<TInput rounded placeholder="圆角输入框"/>
<TInput flush placeholder="无边框输入框"/>
<TInput disabled placeholder="禁用输入框"/>

带图标

通过 prepend-iconappend-icon 属性在输入框前后添加图标。图标组件来自 @tabler/icons-vue

vue

<TInput :prepend-icon="IconSearch" placeholder="搜索..."/>
<TInput type="password" :append-icon="IconUser" placeholder="用户名"/>
<TInput :prepend-icon="IconMail" :append-icon="IconAt" placeholder="email@example.com"/>
<TInput :prepend-icon="IconSearch" placeholder="搜索用户..."/>

输入组

通过 prepend-textappend-text 添加文本前缀/后缀,或使用 #prepend / #append 插槽嵌入自定义内容(如按钮)。

查看代码
vue

<TInput prepend-text="https://" placeholder="your-domain.com"/>
<TInput append-text="¥" placeholder="金额" type="number"/>
<TInput placeholder="输入邮箱">
  <template #prepend>
    <span class="input-group-text"><IconMail :size="18"/></span>
  </template>
  <template #append>
    <button class="btn btn-primary" type="button">验证</button>
  </template>
</TInput>

验证状态

通过 validation 属性设置验证状态:'valid'(绿色)、'invalid'(红色)。配合 Bootstrap 的 .valid-feedback / .invalid-feedback 显示提示信息。

vue

<TInput validation="valid" placeholder="输入正确"/>
<div class="valid-feedback">验证通过!</div>

<TInput validation="invalid" placeholder="输入错误"/>
<div class="invalid-feedback">请检查您的输入。</div>

双向绑定

v-model 支持 stringnumber 类型,组件内部使用 defineModel() 实现。

查看代码
vue

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

  const value = ref('')
</script>
<template>
  <p>当前值:{{ value }}</p>
  <TInput v-model="value" placeholder="试着输入文字..."/>
</template>

标签与提示

通过 labelhintrequiredlabel-description 属性快速构建带标签和提示的完整表单字段。

查看代码
vue

<TInput label="邮箱地址" hint="我们不会将您的邮箱分享给他人。" placeholder="email@example.com"/>

<TInput label="邮政编码" label-description="选填" required placeholder="Your ZIP Code" hint="ZIP Code 必须为 US 或 CDN 格式。"/>

<TInput placeholder="输入内容...">
  <template #label>自定义标签 <span class="badge bg-blue ms-1">NEW</span></template>
  <template #hint>自定义 <a href="#">提示链接</a></template>
</TInput>

API

TInput 属性 (Props)

属性名说明类型默认值
type输入框原生类型string'text'
placeholder占位符文本stringundefined
size输入框尺寸'sm' | 'lg'undefined
rounded圆角风格booleanfalse
flush无边框风格booleanfalse
disabled禁用状态booleanfalse
readonly只读状态booleanfalse
maxlength最大字符长度numberundefined
minlength最小字符长度numberundefined
name原生 name 属性stringundefined
id原生 id 属性stringundefined
autocomplete自动补全stringundefined
required是否必填booleanfalse
prepend-icon前置图标(Tabler 图标组件)Iconundefined
append-icon后置图标(Tabler 图标组件)Iconundefined
prepend-text前置文本stringundefined
append-text后置文本stringundefined
validation验证状态'valid' | 'invalid'undefined
block块级宽度(w-100)booleanfalse
label标签文本stringundefined
label-description标签右侧描述(如字符计数)stringundefined
hint提示文本stringundefined
wrapper-class最外层容器类名(如 "mb-3")stringundefined

TInput 事件 (Emits)

事件名说明回调参数
update:modelValue输入值更新时触发(value: string | number) => void

TInput 插槽 (Slots)

插槽名说明
prepend前置内容(替代 prepend-text),出现在 <input> 之前
append后置内容(替代 append-text),出现在 <input> 之后
label自定义标签内容(替代 label prop)
hint自定义提示内容(替代 hint prop)