為什麼捐款
API 瀏覽器
輸入

QInput 元件用於擷取使用者的文字輸入。它使用 v-model,類似於一般的輸入欄位。它支援錯誤和驗證,並提供多種樣式、色彩和類型。

載入 QInput API...

設計

警告

您的 QInput 只能使用主要設計 (filledoutlinedstandoutborderless) 其中一種。您不能同時使用多種,因為它們是互斥的。

設計概觀



色彩

色彩



標準

標準



填滿

填滿



外框

外框



突出

突出



突出設計最適合的使用案例之一是在 QToolbar 中

QToolbar 中的突出



無邊框

borderless 設計讓您可以將 QInput 無縫整合到其他元件中,而無需 QInput 在自身周圍繪製邊框或變更其背景色彩

無邊框



圓角設計

rounded 屬性僅適用於填滿、外框和突出設計,如下例所示

圓角



方角邊框

square 屬性僅適用於填滿、外框和突出設計,如下例所示

方角邊框



強制暗黑模式

強制暗黑模式



基本功能

原生屬性

設定在 QInput 上的所有屬性,若不在 APIprops 列表中,都將傳遞至原生欄位 (inputtextarea)。例如:autocomplete、placeholder。

請查看這些資源,以取得關於原生屬性的更多資訊 (關於 input 也請查看每個類型的特定屬性)

可清除

作為輔助功能,您可以使用 clearable 屬性,讓使用者可以透過附加的圖示將模型重設為 null。以下範例中的第二個 QInput 等同於使用 clearable

警告

不適用於 v-model 管理的輸入修飾符,例如 .trim,因為在這種情況下,Vue 不會處理 null 值。

可清除



輸入類型

以下 QInput 使用 type 屬性,以便在其中呈現原生等效的 <input type="...">

警告

支援和行為完全取決於呈現頁面的瀏覽器,而不是 Quasar 的核心程式碼。

輸入類型



提示

某些輸入類型 (例如 datetime) 總是會呈現某些控制項,因此如果您使用 label,則可能需要將其與 stack-label 一起設定,否則標籤會與原生瀏覽器控制項重疊。

數字類型輸入

您將搭配 type="number" 屬性使用 v-model.number (請注意 number 修飾符)

數字類型輸入



檔案類型輸入

替代方案

您可以考慮使用 QFile 選擇器,甚至是 QUploader,而不是使用 type="file" 的 QInput。但是,如果您希望使用 QInput,請閱讀以下警告。

警告

當 QInput 的 type="file" 時,請勿使用 v-model。瀏覽器安全策略不允許為此類輸入設定值。因此,您只能讀取它 (附加 @update:model-value 事件),而不能寫入它。

檔案類型輸入



文字區域

文字區域



當您需要 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 */
}

或者您可以使用 money 元件

<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 Boolean 屬性。缺點是效能損失 (因此僅在真正需要時才使用!),並且可以透過使用計算屬性作為規則的值 (而不是在 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 String,則驗證只會在手動呼叫元件的 validate() 方法或包裝器 QForm 自行提交時觸發。

延遲規則



表單驗證



非同步規則

規則也可以是非同步的,方法是使用 async/await 或直接傳回 Promise。

提示

考慮將非同步規則與 debounce 屬性結合使用,以避免在每次按鍵時立即呼叫非同步規則,這可能會對效能產生不利影響。

非同步規則



外部驗證

您也可以使用外部驗證,並且僅傳遞 errorerror-message (啟用 bottom-slots 以顯示此錯誤訊息)。

提示

根據您的需求,您可以將 Vuelidate (我們建議的方法) 或其他一些驗證函式庫連接到 QInput。

外部



您也可以自訂錯誤訊息的插槽

錯誤訊息的插槽



原生表單提交

當處理具有 actionmethod 的原生表單時 (例如,當搭配 ASP.NET 控制器使用 Quasar 時),您需要在 QInput 上指定 name 屬性,否則 formData 將不會包含它 (如果應該包含)

原生表單