Skip to content

Input 输入框

通过鼠标或键盘输入字符

基础文本框

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('')
</script>
<template>
  <Input v-model="test" placeholder="基础文本框,请输入" />
  <span>{{test}}</span>
</template>

禁用文本框

通过 disabled 属性指定是否禁用 input 组件

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('some text')
</script>
<template>
  <Input v-model="test" disabled />
</template>

尺寸

使用 size 属性改变输入框大小。 除了默认大小外,还有另外两个选项: large, small

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('')
</script>
<template>
  <div class="size-holder">
    <Input v-model="test" placeholder="大的 Input" size="large">
    </Input>
    <Input v-model="test" placeholder="普通的 Input">
    </Input>
    <Input v-model="test" placeholder="小的 Input" size="small">
    </Input>
  </div>
</template>
<style scoped>
.size-holder {
  display: flex;
  align-items: center;
}
</style>

复合型输入框

可以在输入框前置或后置一个元素,通常是标签或按钮。可以使用 prependappend 插槽。 要在输入框中添加前后元素,可以使用 prefixsuffix 插槽。

Https://
.com
<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
import Icon from '@/components/Icon/Icon.vue'
const test = ref('')
</script>
<template>
  <Input v-model="test" placeholder="prepend append">
    <template #prepend>Https://</template>
    <template #append>.com</template>
  </Input>

  <Input v-model="test" placeholder="prefix suffix">
    <template #prefix>
      <Icon icon="fa-user" />
    </template>
    <template #suffix>
      <Icon icon="fa-user" />
    </template>
  </Input>
</template>

Textarea

用于输入多行文本信息可缩放的输入框。 添加 type="textarea" 属性来将 input 元素转换为原生的 textarea 元素。

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('')
</script>
<template>
  <Input v-model="test" placeholder="可以是一个 Textarea" type="textarea">
  </Input>
</template>

密码文本框

使用 show-password 属性即可得到一个可切换显示隐藏的密码框

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('')
</script>
<template>
  <Input v-model="test" placeholder="密码文本框,可以切换" showPassword/>
</template>

清空文本框

使用 clearable 属性即可得到一个可一键清空的输入框

<script setup>
import { ref } from 'vue'
import Input from '@/components/Input/Input.vue'
const test = ref('')
</script>
<template>
  <Input v-model="test" clearable placeholder="输入字符以后可以点击清空"/>
</template>

React 用法

tsx
import { useState } from 'react'
import { Input } from '@bobocn/element/react'
import '@bobocn/element/style.css'

// 基础用法
function App() {
  const [value, setValue] = useState('')

  return (
    <Input
      modelValue={value}
      onUpdate:modelValue={setValue}
      placeholder="请输入内容"
    />
  )
}

// 禁用状态
<Input modelValue="" disabled placeholder="禁用" />

// 可清空
<Input modelValue={value} onUpdate:modelValue={setValue} clearable />

// 密码框
<Input modelValue={value} onUpdate:modelValue={setValue} showPassword />

// Textarea
<Input type="textarea" modelValue={value} onUpdate:modelValue={setValue} />

// 复合型输入框(前后缀通过 prepend / append 传入 ReactNode)
<Input
  modelValue={value}
  onUpdate:modelValue={setValue}
  prepend={<span>http://</span>}
  append={<span>.com</span>}
/>

API

属性 (Attributes)

属性名说明类型默认值
type输入框类型'text' | 'textarea' | 'password'text
modelValue / v-model绑定值string
size输入框尺寸'large' | 'small'
disabled是否禁用booleanfalse
clearable是否可清空booleanfalse
show-password是否显示切换密码图标booleanfalse
placeholder占位文本string
readonly是否只读booleanfalse
autocomplete原生 autocomplete 属性stringoff
autofocus原生 autofocus 属性booleanfalse
form原生 form 属性string

事件 (Events)

事件名说明回调参数
update:modelValue绑定值更新时触发(value: string) => void
input输入时触发(value: string) => void
change值改变且失焦时触发(value: string) => void
focus获取焦点时触发(event: FocusEvent) => void
blur失去焦点时触发(event: FocusEvent) => void
clear点击清空按钮时触发() => void

插槽 (Slots)

插槽名说明
prepend输入框前置内容
prefix输入框头部图标
suffix输入框尾部图标
append输入框后置内容

方法 (Exposes)

方法名说明类型
ref原生 input / textarea 元素引用Ref<HTMLInputElement | HTMLTextAreaElement>

基于 MIT 许可发布