表单字段(Field)
Field组件允许您轻松创建响应式表单UI——通过使用主标签、图标、错误占位符及错误状态、助手占位符和项目/字符计数器来包装每个表单组件(QInput,QSelect,QDatetime,QChipsInput等)
在小窗口中,标签和内容将垂直堆叠,而较大的窗口标签将放置在QField内容的左侧。 无论窗口宽度如何,图标总是位于标签和内容的左侧。
适用于任何组件,不仅适用于Form组件。
安装 编辑 /quasar.conf.js
:framework: { components: ['QField' ] }
基本用法 <q-field icon ="cloud" label ="Your Gmail" helper ="Helper" :error ="mailHasError" error-label ="We need a valid email" :count ="10" > <q-input suffix ="@gmail.com" v-model ="model" /> </q-field >
Vue属性
Vue属性
类型
说明
label
字符串
要使用的主要标签。
icon
字符串
标签左侧使用的图标。
icon-color
字符串
图标的可选颜色。
helper
字符串
帮助文本,被放置在您包装的表单组件下方。
error
布尔
高亮以显示字段和包装的表单组件有错误。
error-label
字符串
如果指定了error
并且’true’,那么字段帮助文本就被这个属性替换。不依赖于字段帮助文本的存在。
warning
布尔
高亮以显示字段和包装的表单组件有警告。
warning-label
字符串
如果指定了warning
并且是true
,那么字段帮助文本将被这个属性替换。不依赖于字段帮助文本的存在。
count
数字/布尔
在包装的表单组件中添加一个字符或项目的计数器(如碎片)。如果是布尔值,它只是计数它们。如果是数字类型,它也会添加一个最大数字,但不能作为限制。
inset
字符串
在当前字段缺失图标和/或标签时,在您的字段插入以与其他字段对齐。’icon’、 ‘label’ 或 ‘full’(图标和标签都插入)之一。
orientation
字符串
覆盖响应方向。 ‘vertical’、’horizontal’之一。
label-width
数字
在12个网格点中,标签需要多少?默认值是5.最小值是1,最大值是12.
dark
布尔
你的字段是在黑暗的背景下使用?
例子 以下只是QField可以为您做什么的一瞥。
使用计数器 <q-field :count ="16" > <q-input type ="password" max-length ="16" v-model ="model" /> </q-field > <q-field count icon ="account_box" helper ="Some helper here" :label-width ="3" > <q-chips-input float-label ="Float Label" v-model ="model" /> </q-field > <q-field count > <q-select v-model ="select" :options ="[ { label: 'Google', icon: 'email', value: 'goog' }, { label: 'Facebook', description: 'Enables communication', value: 'fb' }, { label: 'Twitter', secondIcon: 'alarm', value: 'twtr' } ]" /> </q-field >
使用Vuelidate进行验证 Quasar对表单组件验证的推荐是使用Vuelidate ,因为它非常适合整体架构。 它很简单、轻量级和基于模型 。
您需要先将Vuelidate添加到您的项目中。 参见这里 。
<template > <q-field icon ="mail" label ="Email" helper ="Type the email we can use to contact you" :error ="$v.email.$error" error-label ="Please type a valid email" count > <q-input type ="email" v-model ="email" @blur ="$v.email.$touch" /> </q-field > </template > <script > import { required, email } from 'vuelidate/lib/validators' export default { data () { return { email: '' } }, validations: { email: { required, email } } } </script >
<q-field icon ="cloud" helper ="Helper" > <q-input v-model ="model" float-label ="Float Label" /> </q-field >
自定义标签宽度 如果您为一个QField自定义标签宽度,那么最好将其应用于所有同级QField以实现UI一致性。 由于Quasar正在使用12点网格系统,因此为标签宽度分配一个>=1和<12的数字。 默认是5
。
<q-field helper ="Helper" :label-width ="3" label ="Label" > <q-input v-model ="model" /> </q-field >
使用Inset 当一些字段有图标和标签,而一些字段缺失一个或全部时,Inset对于完全对齐所有QField非常有用。 例如,如果没有QField使用图标,那么为任何QField添加Inset是有意义的。 标签也一样。
<q-field icon ="cloud" helper ="Helper" label ="Horizontal" > <q-input v-model ="model" /> </q-field > <q-field helper ="Helper" label ="Label" inset ="icon" > <q-input v-model ="model" /> </q-field > <q-field helper ="Helper" inset ="full" > <q-input v-model ="model" /> </q-field >
我们使用Quasar CSS Flex创建一个放置两个QInput的不可换行的行。
当QField包装多个Form组件时,避免向QField添加计数器,因为只有一个Form组件最终会将其长度同步到QField。 每个Form组件都有自己的长度而只有一个计数器的占位符,所以最终你只会使用户混淆。
<q-field icon ="security" helper ="Helper" label ="Label" > <div class ="row no-wrap" > <q-input class ="col" v-model ="model" stack-label ="Input 1" /> <q-input class ="col" v-model ="model" stack-label ="Input 2" /> </div > </q-field >
黑暗的背景 将QField放置在黑暗背景上时,使用dark
属性通知QField需要调整颜色。
<div class ="bg-grey-9" style ="padding: 10px" > <q-field dark label ="Knob" helper ="Touch to change" icon ="cake" :error ="error" > <q-knob v-model ="knob" :min ="knobMin" :max ="knobMax" > <q-icon class ="on-left" name ="volume_up" /> {{knob}} </q-knob > </q-field > </div >
选项组 这是一个选项组组件的例子。
<q-field icon ="flight_takeoff" label ="Flight" helper ="Pick the day when you want to go" > <q-option-group type ="radio" v-model ="option" :options ="[ { label: 'Monday', value: 'monday' }, { label: 'Tuesday', value: 'tuesday' }, { label: 'Friday', value: 'friday' } ]" /> </q-field >