输入
v-input
组件为您提供创建自己的自定义输入的基础。 它由一个 前置/追加 插槽,消息和一个默认插槽组成。 recommended 扩展了此组件,但可以将其用作独立组件。
用例
v-input
有四个主要区域。前列位置、附加位置、默认位置和消息。 这些构成了所有形式组件之间共享的核心逻辑。
template script style
<template>
<v-container
id="input-usage"
fluid
>
<v-row>
<v-col cols="12">
<v-input
:messages="['Messages']"
append-icon="close"
prepend-icon="phone"
>
Default Slot
</v-input>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
data () {
return {
text: '',
}
},
methods: {
appendIconCallback () {},
prependIconCallback () {},
},
}
</script>
<style>
#input-usage .v-input__prepend-outer,
#input-usage .v-input__append-outer,
#input-usage .v-input__slot,
#input-usage .v-messages {
border: 1px dashed rgba(0,0,0, .4);
}
</style>
v-input
组件是作为 Vuetify 所有表单控件的包装器。它 不会 继承属性,因为它们会被传递给内部输入。
API
从下面选择您想要的组件,并查看可用的属性、插槽、事件和函数。
实战场
template script style
<template>
<v-row>
<v-row justify="space-around">
<v-col cols="12">
<v-slider v-model="errorCount" label="Max error count" min="0" max="4"></v-slider>
</v-col>
<v-switch v-model="success" class="ma-2" label="Success"></v-switch>
<v-switch v-model="error" class="ma-2" label="Error"></v-switch>
<v-switch v-model="hideDetails" class="ma-2" label="Hide details"></v-switch>
<v-switch v-model="persistentHint" class="ma-2" label="Persistent hint"></v-switch>
<v-col cols="12">
<v-row justify="space-around">
<v-btn color="success" @click="success = true; error = false;">Success</v-btn>
<v-btn color="error" @click="success = false; error = true;">Error</v-btn>
</v-row>
</v-col>
</v-row>
<v-input
:messages="['Messages']"
:success="success"
:success-messages="successMsg"
:error="error"
:error-messages="errorMsg"
:hide-details="hideDetails"
:error-count="errorCount"
hint="I am hint"
:persistent-hint="persistentHint"
append-icon="close"
prepend-icon="phone"
@click:append="appendIconCallback"
@click:prepend="prependIconCallback"
>
Default Slot
</v-input>
</v-row>
</template>
<script>
export default {
data () {
return {
text: '',
success: false,
error: false,
hideDetails: false,
errorCount: 1,
persistentHint: true,
}
},
computed: {
successMsg () {
return this.success ? ['Done'] : []
},
errorMsg () {
return this.error ? ['Error', 'Another one', 'One more', 'All the errors'] : []
},
},
methods: {
appendIconCallback () {
alert('click:append')
},
prependIconCallback () {
alert('click:prepend')
},
},
}
</script>
<style>
#input-usage .v-input__prepend-outer,
#input-usage .v-input__append-outer,
#input-usage .v-input__slot,
#input-usage .v-messages {
border: 1px dashed rgba(0,0,0, .4);
}
</style>
示例
下面是一些简单到复杂的例子。
加载
v-input
具有可使用的 loading
状态,例如 用于数据加载指示。 注意:仅以 v-text-field
为例。
template
<template>
<v-text-field color="success" loading disabled></v-text-field>
</template>
提示
v-input
可以具有 hint
,可以告诉用户如何使用输入。 如果没有显示任何消息,persistent-hint
属性将使提示始终可见。
template script
<template>
<v-row>
<v-switch v-model="showMessages" label="Show messages"></v-switch>
<v-input hint="I am hint" persistent-hint :messages="messages">Input</v-input>
</v-row>
</template>
<script>
export default {
data: () => ({
showMessages: false,
}),
computed: {
messages () {
return this.showMessages ? ['Message'] : undefined
},
},
}
</script>
成功
与任何可验证的 Vuetify 组件一样,v-input
可以使用 success
属性设置为成功状态,也可以使用 success-messages
属性添加消息。
template
<template>
<v-input :success-messages="['Success']" success disabled>Input</v-input>
</template>
错误
作为任何可验证的 Vuetify 组件,可以使用 error
属性将 v-input
设置为错误状态,可以使用 error-messages
属性添加消息。 您可以使用 error-count
属性确定要显示的错误消息数。
template
<template>
<v-input :error-messages="['Fatal error']" error disabled>Input</v-input>
</template>
多个错误
您可以使用 error-count
属性向 v-input
添加多个错误。
template
<template>
<v-input error-count="2" :error-messages="['Fatal error', 'Another error']" error disabled>Input</v-input>
</template>
Vuetify Twitter
Get updates on the latest happenings, release information and more on Twitter.
ads by Vuetify
](https://twitter.com/vuetifyjs?ref=vuetifyjs.com)
规则
您可以将自定义验证规则添加到 v-input
,将其添加为返回 true
/error 消息的函数。 注意:仅以 v-text-field
为例。
template script
<template>
<v-text-field :rules="rules"></v-text-field>
</template>
<script>
export default {
data: () => ({
rules: [
value => !!value || 'Required.',
value => (value || '').length <= 20 || 'Max 20 characters',
value => {
const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return pattern.test(value) || 'Invalid e-mail.'
},
],
}),
}
</script>
Components.Inputs.examples.hide-details.heading
当 hide-details
设置为 auto
时,只有在有信息(提示、错误信息等)显示的情况下,才会显示信息。
template script
<template>
<div>
<v-text-field label="Main input" :rules="rules" hide-details="auto"></v-text-field>
<v-text-field label="Another input"></v-text-field>
</div>
</template>
<script>
export default {
data: () => ({
rules: [
value => !!value || 'Required.',
value => (value && value.length >= 3) || 'Min 3 characters',
],
}),
}
</script>
插槽
v-input
具有 append
和 prepend
插槽。 您可以在其中放置自定义图标。
template
<template>
<v-text-field>
<v-icon slot="append" color="red">mdi-plus</v-icon>
<v-icon slot="prepend" color="green">mdi-minus</v-icon>
</v-text-field>
</template>
插槽事件
v-input
可以可以具有插槽的 click:append
和 click:prepend
两个事件。注意:仅以 v-text-field
为例。
template script style
<template>
<v-container
id="input-usage"
fluid
>
<v-row>
<v-col cols="12">
<v-input
:messages="['Messages']"
append-icon="close"
prepend-icon="phone"
@click:append="appendIconCallback"
@click:prepend="prependIconCallback"
>
Default Slot
</v-input>
</v-col>
</v-row>
</v-container>
</template>
<script>
export default {
data () {
return {
text: '',
}
},
methods: {
appendIconCallback () {
alert('click:append')
},
prependIconCallback () {
alert('click:prepend')
},
},
}
</script>
<style>
#input-usage .v-input__prepend-outer,
#input-usage .v-input__append-outer,
#input-usage .v-input__slot,
#input-usage .v-messages {
border: 1px dashed rgba(0,0,0, .4);
}
</style>