为什么捐赠
API 资源管理器
输入

QInput 组件用于捕获用户的文本输入。它使用 v-model,类似于常规输入。它支持错误和验证,并提供各种样式、颜色和类型。

正在加载 QInput API...

设计

警告

对于您的 QInput,您只能使用一种主要设计(filledoutlinedstandoutborderless)。您不能同时使用多个,因为它们是互斥的。

设计概述



着色

着色



标准

标准



填充

填充



轮廓

轮廓



突出

突出



突出显示设计的最佳用例之一是在 QToolbar 中

在 QToolbar 中突出显示



无边框

borderless 设计允许您将 QInput 无缝集成到其他组件中,而无需 QInput 在其周围绘制边框或更改其背景颜色

无边框



圆角设计

rounded 属性仅与填充、轮廓和突出显示设计一起使用,如下面的示例所示

圆角



方形边框

square 属性只有在填充、带边框和突出显示的设计中才有意义,如下面的示例所示

方形边框



强制深色模式

强制深色模式



基本功能

原生属性

QInput 上设置的所有不在 **API** 中 props 列表中的属性都将传递给原生字段(inputtextarea)。一些示例:autocomplete、placeholder。

请查看这些资源以获取有关原生属性的更多信息(对于输入,还可以查看每种类型的特定属性)

可清除

作为辅助工具,您可以使用 clearable 属性,以便用户可以通过附加的图标将模型重置为 null。下面示例中的第二个 QInput 等同于使用 clearable

警告

不适用于 v-model 管理的输入修饰符,例如 .trim,因为在这种情况下,Vue 不会处理 null 值。

可清除



输入类型

以下 QInput 使用 type 属性来渲染其内部的原生等效 <input type="...">

警告

支持和行为完全取决于渲染页面的浏览器,而不是 Quasar 的核心代码。

输入类型



提示

某些输入类型(如 datetime)始终渲染一些控件,因此,如果您使用的是 label,则可能需要将其与 stack-label 一起设置,否则标签将与原生浏览器控件重叠。

数字类型输入

您将使用 v-model.number(注意 number 修饰符)以及 type="number" 属性

数字类型输入



文件类型输入

替代方案

与其使用具有 type="file" 属性的 QInput,不如使用 QFile 选择器,甚至 QUploader但是,如果您希望使用 QInput,请阅读下面的警告。

警告

当 QInput 的 typefile 时,请勿使用 v-model。浏览器安全策略不允许将值设置为此类输入。因此,您只能读取它(附加 @update:model-value 事件),但不能写入它。

文件类型输入



Textarea

Textarea



当您需要 QInput 随着其内容一起增长时,请像下面的示例一样使用 autogrow 属性

自动增长



前缀和后缀

前缀和后缀



自定义标签

使用 label 插槽,您可以自定义标签的外观或添加特殊功能,如 QTooltip

提示

不要忘记设置 label-slot 属性。

如果您想与标签(QTooltip)的内容进行交互,请在插槽中的元素上添加 all-pointer-events 类。

自定义标签



阴影文本

阴影文本



带有 QBtn 类型“submit”的插槽

警告

当在 QField、QInput 或 QSelect 的“before”、“after”、“prepend”或“append”插槽之一中放置一个类型为“submit”的 QBtn 时,您还应该在相关的 QBtn 上添加一个 @click 监听器。此监听器应调用提交表单的方法。此类插槽中的所有“click”事件都不会传播到其父元素。

模型去抖动

去抖动的作用是在您监视模型并在其上执行昂贵操作时。因此,您希望首先让用户键入内容,然后再触发模型更新,而不是在每次按键时都更新模型。

模型去抖动



加载状态

加载状态



遮罩

您可以借助 mask 属性强制/帮助用户输入特定的格式。

警告

仅当 type 为“text”(默认)、“search”、“url”、“tel”或“password”之一时,遮罩才可用。

以下是遮罩标记

标记描述
#数字
S字母,a 到 z,不区分大小写
N字母数字,字母不区分大小写
A字母,转换为大写
a字母,转换为小写
X字母数字,字母转换为大写
x字母数字,字母转换为小写

QInput mask 属性有 **辅助工具**:完整列表。您可以为了方便使用这些工具(例如:“phone”、“card”)或编写指定自定义需求的字符串。

基本



填充遮罩



unmasked-value 在您想要强制用户键入特定格式但又希望模型包含原始值时非常有用

未掩码模型



reverse-fill-mask 在您想要强制用户从末尾填充遮罩并允许输入长度不固定时非常有用

反向填充遮罩



使用第三方遮罩处理器

您可以通过对 QInput 进行一些小的调整来轻松使用任何第三方遮罩处理器。

从这样的 QInput 开始

<q-input
  filled
  v-model="price"
  label="Price with 2 decimals"
  mask="#.##"
  fill-mask="#"
  reverse-fill-mask
  hint="Mask: #.00"
  input-class="text-right"
/>

您可以使用 v-money 指令

<q-field
  filled
  v-model="price"
  label="Price with v-money directive"
  hint="Mask: $ #,###.00 #"
>
  <template v-slot:control="{ id, floatingLabel, modelValue, emitValue }">
    <input :id="id" class="q-field__input text-right" :value="modelValue" @change="e => emitValue(e.target.value)" v-money="moneyFormatForDirective" v-show="floatingLabel">
  </template>
</q-field>
moneyFormatForDirective: {
  decimal: '.',
  thousands: ',',
  prefix: '$ ',
  suffix: ' #',
  precision: 2,
  masked: false /* doesn't work with directive */
}

或者您可以使用货币组件

<q-field
  filled
  v-model="price"
  label="Price with v-money component"
  hint="Mask: $ #,###.00 #"
>
  <template v-slot:control="{ id, floatingLabel, modelValue, emitValue }">
    <money :id="id" class="q-field__input text-right" :model-value="modelValue" @update:model-value="emitValue" v-bind="moneyFormatForComponent" v-show="floatingLabel" />
  </template>
</q-field>
moneyFormatForComponent: {
  decimal: '.',
  thousands: ',',
  prefix: '$ ',
  suffix: ' #',
  precision: 2,
  masked: true
}

验证

内部验证

您可以使用 :rules 属性验证 QInput 组件。指定嵌入规则数组或您自己的验证器。您的自定义验证器将是一个函数,如果验证器成功则返回 true,如果失败则返回带有错误消息的 String

提示

默认情况下,出于性能原因,规则的更改不会触发新的验证,直到模型更改。为了在规则更改时也触发验证,请使用 reactive-rules 布尔属性。缺点是性能损失(因此仅在真正需要时才使用它!),并且可以通过使用计算属性作为规则的值(而不是在 Vue 模板中内联指定它们)来稍微减轻它。

这样您就可以编写类似这样的便捷规则

value => condition || errorMessage

例如

value => value.includes('Hello') || 'Field must contain word Hello'

您可以通过在 QInput 上调用 resetValidation() 方法来重置验证。

QInput rules 属性有 **辅助工具**:完整列表。您可以为了方便使用这些工具(例如:“date”、“time”、“hexColor”、“rgbOrRgbaColor”、“anyColor”)或编写指定自定义需求的字符串。

基本



最大长度



如果您设置了 lazy-rules,则验证将在第一次失去焦点后开始。如果 lazy-rules 设置为 ondemand 字符串,则只有在手动调用组件的 validate() 方法或包装器 QForm 提交自身时才会触发验证。

延迟规则



表单验证



异步规则

规则也可以是异步的,可以使用 async/await 或直接返回 Promise。

提示

考虑将异步规则与 debounce 属性结合使用,以避免在每次按键时都立即调用异步规则,这可能会损害性能。

异步规则



外部验证

您还可以使用外部验证,只传递 errorerror-message(启用 bottom-slots 以显示此错误消息)。

提示

根据您的需要,您可以连接 Vuelidate(我们推荐的方法)或其他一些验证库到 QInput。

外部



您还可以自定义错误消息的插槽

错误消息的插槽



原生表单提交

当处理具有 actionmethod 的原生表单时(例如,当将 Quasar 与 ASP.NET 控制器一起使用时),您需要在 QInput 上指定 name 属性,否则 formData 将不包含它(如果应该包含)。

原生表单