用于接收用户键盘输入值。
受控组件,需要声明 modelValue
属性
基础用法
show code
<template>
<Input class="input" v-model="value" placeholder="placeholder"></Input>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Input } from 'comz'
export default defineComponent({
components: {
Input
},
setup() {
return {
value: ref('')
}
}
})
</script>
<style scoped>
.input {
width: 200px;
}
</style>
输入框状态
可以为组件添加 disabled
、readonly
标签,渲染不同的状态样式。
禁用
和 只读
状态下输入框不响应任何事件。
show code
<template>
<Flex gap="16px" wrap>
<Input class="input" v-model="value" placeholder="normal"></Input>
<Input
class="input"
v-model="value"
placeholder="disabled"
disabled
></Input>
<Input
class="input"
v-model="value"
placeholder="readonly"
readonly
></Input>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Input } from 'comz'
export default defineComponent({
components: {
Flex,
Input
},
setup() {
return {
value: ref('some text.')
}
}
})
</script>
<style scoped>
.input {
width: 200px;
}
</style>
插槽
使用 prepend
和 append
插槽可以在输入框前后插入内容。
show code
<template>
<Flex wrap>
<Flex gap="16px" flow="column">
<Input class="input" v-model="value1" placeholder="normal">
<template #prepend
><Icon><Envelope /></Icon
></template>
<template #append>.com</template>
</Input>
<Input class="input" v-model="value1" placeholder="disabled" disabled>
<template #prepend
><Icon><Envelope /></Icon
></template>
<template #append>.com</template>
</Input>
<Input class="input" v-model="value1" placeholder="readonly" readonly>
<template #prepend
><Icon><Envelope /></Icon
></template>
<template #append>.com</template>
</Input>
</Flex>
<Flex gap="16px" flow="column">
<Input class="input" v-model="value2" placeholder="normal">
<template #prepend>¥</template>
</Input>
<Input class="input" v-model="value2" placeholder="disabled" disabled>
<template #prepend>¥</template>
</Input>
<Input class="input" v-model="value2" placeholder="readonly" readonly>
<template #prepend>¥</template>
</Input>
</Flex>
<Flex gap="16px" flow="column">
<Input class="input" v-model="value3" placeholder="normal">
<template #append
><Icon link><MicFill /></Icon
></template>
</Input>
<Input class="input" v-model="value3" placeholder="disabled" disabled>
<template #append><MicFill /></template>
</Input>
<Input class="input" v-model="value3" placeholder="readonly" readonly>
<template #append><MicFill /></template>
</Input>
</Flex>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Input, Icon } from 'comz'
import { Envelope, MicFill } from '@comz/icons'
export default defineComponent({
components: {
Flex,
Envelope,
MicFill,
Icon,
Input
},
setup() {
return {
value1: ref(''),
value2: ref(''),
value3: ref('')
}
}
})
</script>
<style scoped>
.input {
width: 200px;
color: rgb(131, 131, 131);
}
</style>
可清空
为组件添加 clearable
属性,在用户输入字符后显示可清空值的按钮。
show code
<template>
<Input
class="input"
v-model="value"
placeholder="write some text"
clearable
></Input>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Input } from 'comz'
export default defineComponent({
components: {
Input
},
setup() {
return {
value: ref('')
}
}
})
</script>
<style scoped>
.input {
width: 200px;
}
</style>
API
属性
Attribute | Type | Default | Description |
---|
modelValue | string | '' | 输入值 |
placeholder | string | '' | 占位文本 |
readonly | boolean | false | 是否只读 |
disabled | boolean | false | 是否禁用 |
clearable | boolean | false | 展示清空按钮 |
事件
Event | Type | Description |
---|
update:modelValue | (value: string) => void | 监听 modelValue 值变化 |
on-focus | (value: string) => void | 监听输入框聚焦状态 |
on-blur | (value: string) => void | 监听输入框失焦状态 |
on-clear | () => void | 监听设置 clearable 时的清空行为 |
插槽
Slot | Description |
---|
prepend | 放置在输入框之前的插槽 |
append | 放置在输入框之后的插槽 |