Skip to content

Input 输入框

单行文本输入框,支持清空、前缀图标、字数统计等常见功能。

交互式调试

🔧调试模式Playground

基础用法

vue
<script setup lang="ts">
import { ref } from 'vue'
const val = ref('')
</script>

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

输入类型

vue
<template>
  <view class="demo-col">
    <lk-input type="text" placeholder="文本输入" />
    <lk-input type="password" placeholder="密码输入" />
    <lk-input type="number" placeholder="数字输入" />
    <lk-input type="tel" placeholder="电话号码" />
    <lk-input type="digit" placeholder="带小数点数字键盘" />
    <lk-input type="idcard" placeholder="身份证键盘" />
  </view>
</template>

前缀图标

vue
<template>
  <view class="demo-col">
    <lk-input prefix-icon="search" placeholder="搜索..." />
    <lk-input prefix-icon="person" placeholder="用户名" />
    <lk-input prefix-icon="lock" type="password" placeholder="密码" />
    <lk-input prefix-icon="envelope" type="email" placeholder="电子邮箱" />
  </view>
</template>

尺寸

vue
<template>
  <view class="demo-col">
    <lk-input size="sm" placeholder="小尺寸" />
    <lk-input size="md" placeholder="中尺寸(默认)" />
    <lk-input size="lg" placeholder="大尺寸" />
  </view>
</template>

可清空 & 字数统计

vue
<script setup lang="ts">
import { ref } from 'vue'
const bio = ref('')
</script>

<template>
  <!-- clearable 默认已启用 -->
  <lk-input v-model="bio" placeholder="请输入昵称" clearable />

  <!-- 字数统计(配合 maxlength) -->
  <lk-input
    v-model="bio"
    placeholder="一句话介绍自己"
    :maxlength="50"
    show-count
  />
</template>

禁用 & 只读

vue
<template>
  <view class="demo-col">
    <lk-input value="禁用状态" disabled />
    <lk-input value="只读状态" readonly />
  </view>
</template>

事件监听

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

const keyword = ref('')

function onInput(value: string | number) {
  keyword.value = String(value)
}

function onConfirm(event: any) {
  console.log('confirm value:', event.detail?.value)
}
</script>

<template>
  <lk-input
    v-model="keyword"
    confirm-type="search"
    placeholder="搜索关键词"
    @input="onInput"
    @confirm="onConfirm"
    @keyboardheightchange="event => console.log(event.detail)"
  />
</template>

假输入框

用于搜索入口、选择器入口等场景。fake 模式不会渲染原生 input,点击时只触发 click

vue
<template>
  <lk-input
    fake
    prefix-icon="search"
    placeholder="搜索商品"
    @click="goSearch"
  />
</template>

与表单验证结合

vue
<script setup lang="ts">
import { ref } from 'vue'
const formRef = ref()
const form = ref({ username: '', phone: '' })

async function submit() {
  await formRef.value.validate()
}
</script>

<template>
  <lk-form ref="formRef" :model="form">
    <lk-form-item
      label="用户名"
      prop="username"
      :rules="[{ required: true, message: '请输入用户名' }]"
    >
      <lk-input v-model="form.username" prefix-icon="person" placeholder="请输入用户名" />
    </lk-form-item>
    <lk-form-item
      label="手机号"
      prop="phone"
      :rules="[
        { required: true, message: '请输入手机号' },
        { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确' }
      ]"
    >
      <lk-input v-model="form.phone" type="tel" prefix-icon="phone" placeholder="请输入手机号" />
    </lk-form-item>
    <lk-button block @click="submit">提交</lk-button>
  </lk-form>
</template>

API

Props

参数说明类型可选值默认值
modelValue绑定值,支持 v-modelstring / number''
type输入类型stringtext / password / number / tel / email / digit / idcardtext
size尺寸stringsm / md / lgmd
placeholder占位文字string''
placeholderStyle占位符样式string''
placeholderClass占位符样式类stringinput-placeholder
name原生表单字段名string''
disabled是否禁用booleanfalse
readonly是否只读booleanfalse
clearable是否显示清空按钮booleantrue
maxlength最大长度,-1 表示不限制number-1
showCount是否显示字数统计booleanfalse
showWordLimit是否显示输入字数限制booleanfalse
prop表单字段名,用于 Form 校验联动string''
autofocus首次渲染时是否自动聚焦booleanfalse
focus是否聚焦,受控聚焦状态booleanfalse
prefixIcon前缀图标名string''
suffixIcon后缀图标名string''
showPassword密码输入时是否显示明暗切换按钮booleanfalse
borderless是否无边框,常用于表单列表内booleanfalse
inputAlign输入内容对齐方式stringleft / center / rightleft
confirmType键盘右下角按钮文字stringsend / search / next / go / done / returndone
confirmHold点击键盘右下角按钮时是否保持键盘不收起booleanfalse
cursorSpacing光标与键盘的距离,单位 pxnumber0
cursor指定聚焦时的光标位置number-1
selectionStart光标起始位置,需与 selectionEnd 搭配使用number-1
selectionEnd光标结束位置,需与 selectionStart 搭配使用number-1
adjustPosition键盘弹起时是否自动上推页面booleantrue
holdKeyboard聚焦时点击页面是否保持键盘不收起booleanfalse
inputmodeH5/App 输入模式提示stringnone / text / decimal / numeric / tel / search / email / urltext
ignoreCompositionEvent是否忽略系统组合输入事件booleantrue
fake是否为假输入框模式booleanfalse
fakeText假输入框显示文本,不设置时使用 placeholderstring''
id根节点 idstring''
customClass自定义类名string / object / array''
customStyle自定义样式string / object''

Events

事件名说明回调参数
update:modelValue输入值变化时触发,用于 v-model(value: string | number)
input键盘输入时触发,组合输入中默认等 compositionend 后触发(value: string | number)
change清空或失焦提交最终值时触发(value: string | number)
focus输入框聚焦时触发(event: Event)
blur输入框失焦时触发(event: Event)
confirm点击键盘右下角按钮时触发(event: Event)
keyboardheightchange键盘高度变化时触发(event: Event)
clear点击清空按钮时触发()
clickfake=true 时点击假输入框触发(event: Event)
compositionstart组合输入开始时触发(event: Event)
compositionupdate组合输入更新时触发(event: Event)
compositionend组合输入结束时触发(event: Event)

Slots

插槽名说明
prefix前缀自定义内容
suffix后缀自定义内容
notice内嵌通知内容

注意事项

TIP

update:modelValueinput 会在输入值变化时同步触发;change 主要用于失焦提交与清空场景,适合触发表单校验。

WARNING

digitidcardkeyboardheightchangeholdKeyboardinputmode 等能力存在平台差异,请以 UniApp 当前运行端的原生 input 能力为准。

基于 MIT 协议开源 · 粤ICP备2022114240号-3

Input 输入框

正在连接预览服务...

请先运行 pnpm run dev:h5