表單中的輸入框組件。
import Vue from 'vue';
import { Field } from 'vant';
Vue.use(Field);
可以通過 v-model 雙向綁定輸入框的值,通過 placeholder 設(shè)置占位提示文字。
<!-- Field 是基于 Cell 實(shí)現(xiàn)的,可以使用 CellGroup 作為容器來提供外邊框。 -->
<van-cell-group>
<van-field v-model="value" label="文本" placeholder="請輸入用戶名" />
</van-cell-group>
export default {
data() {
return {
value: '',
};
},
};
根據(jù) type 屬性定義不同類型的輸入框,默認(rèn)值為 text。
<!-- 輸入任意文本 -->
<van-field v-model="text" label="文本" />
<!-- 輸入手機(jī)號,調(diào)起手機(jī)號鍵盤 -->
<van-field v-model="tel" type="tel" label="手機(jī)號" />
<!-- 允許輸入正整數(shù),調(diào)起純數(shù)字鍵盤 -->
<van-field v-model="digit" type="digit" label="整數(shù)" />
<!-- 允許輸入數(shù)字,調(diào)起帶符號的純數(shù)字鍵盤 -->
<van-field v-model="number" type="number" label="數(shù)字" />
<!-- 輸入密碼 -->
<van-field v-model="password" type="password" label="密碼" />
export default {
data() {
return {
tel: '',
text: '',
digit: '',
number: '',
password: '',
};
},
};
Tips: digit 類型從 2.4.2 版本開始支持
通過 readonly 將輸入框設(shè)置為只讀狀態(tài),通過 disabled 將輸入框設(shè)置為禁用狀態(tài)。
<van-cell-group>
<van-field label="文本" value="輸入框只讀" readonly />
<van-field label="文本" value="輸入框已禁用" disabled />
</van-cell-group>
通過 left-icon 和 right-icon 配置輸入框兩側(cè)的圖標(biāo),通過設(shè)置 clearable 在輸入過程中展示清除圖標(biāo)。
<van-cell-group>
<van-field
v-model="value1"
label="文本"
left-icon="smile-o"
right-icon="warning-o"
placeholder="顯示圖標(biāo)"
/>
<van-field
v-model="value2"
clearable
label="文本"
left-icon="music-o"
placeholder="顯示清除圖標(biāo)"
/>
</van-cell-group>
export default {
data() {
return {
value1: '',
value2: '123',
};
},
};
設(shè)置 required 屬性表示這是一個必填項(xiàng),可以配合 error 或 error-message 屬性顯示對應(yīng)的錯誤提示。
<van-cell-group>
<van-field
v-model="username"
error
required
label="用戶名"
placeholder="請輸入用戶名"
/>
<van-field
v-model="phone"
required
label="手機(jī)號"
placeholder="請輸入手機(jī)號"
error-message="手機(jī)號格式錯誤"
/>
</van-cell-group>
通過 button 插槽可以在輸入框尾部插入按鈕。
<van-field
v-model="sms"
center
clearable
label="短信驗(yàn)證碼"
placeholder="請輸入短信驗(yàn)證碼"
>
<template #button>
<van-button size="small" type="primary">發(fā)送驗(yàn)證碼</van-button>
</template>
</van-field>
通過 formatter 屬性可以對輸入的內(nèi)容進(jìn)行格式化,通過 format-trigger 屬性可以指定執(zhí)行格式化的時(shí)機(jī),默認(rèn)在輸入時(shí)進(jìn)行格式化。
<van-field
v-model="value1"
label="文本"
:formatter="formatter"
placeholder="在輸入時(shí)執(zhí)行格式化"
/>
<van-field
v-model="value2"
label="文本"
:formatter="formatter"
format-trigger="onBlur"
placeholder="在失焦時(shí)執(zhí)行格式化"
/>
export default {
data() {
return {
value1: '',
value2: '',
};
},
methods: {
formatter(value) {
// 過濾輸入的數(shù)字
return value.replace(/\d/g, '');
},
},
};
對于 textarea,可以通過 autosize 屬性設(shè)置高度自適應(yīng)。
<van-field
v-model="message"
rows="1"
autosize
label="留言"
type="textarea"
placeholder="請輸入留言"
/>
設(shè)置 maxlength 和 show-word-limit 屬性后會在底部顯示字?jǐn)?shù)統(tǒng)計(jì)。
<van-field
v-model="message"
rows="2"
autosize
label="留言"
type="textarea"
maxlength="50"
placeholder="請輸入留言"
show-word-limit
/>
通過 input-align 屬性可以設(shè)置輸入框內(nèi)容的對齊方式,可選值為 center、right。
<van-field
v-model="value"
label="文本"
placeholder="輸入框內(nèi)容右對齊"
input-align="right"
/>
參數(shù) | 說明 | 類型 | 默認(rèn)值 |
---|---|---|---|
v-model (value) | 當(dāng)前輸入的值 | number | string | - |
label | 輸入框左側(cè)文本 | string | - |
name v2.5.0
|
名稱,提交表單的標(biāo)識符 | string | - |
type | 輸入框類型, 可選值為 tel digit
number textarea password 等 |
string | text
|
size | 大小,可選值為 large
|
string | - |
maxlength | 輸入的最大字符數(shù) | number | string | - |
placeholder | 輸入框占位提示文字 | string | - |
border | 是否顯示內(nèi)邊框 | boolean | true
|
disabled | 是否禁用輸入框 | boolean | false
|
readonly | 是否只讀 | boolean | false
|
colon v2.7.2
|
是否在 label 后面添加冒號 | boolean | false
|
required | 是否顯示表單必填星號 | boolean | false
|
center | 是否使內(nèi)容垂直居中 | boolean | false
|
clearable | 是否啟用清除圖標(biāo),點(diǎn)擊清除圖標(biāo)后會清空輸入框 | boolean | false
|
clear-trigger v2.9.1
|
顯示清除圖標(biāo)的時(shí)機(jī),always 表示輸入框不為空時(shí)展示,
focus 表示輸入框聚焦且不為空時(shí)展示 |
string | focus
|
clickable | 是否開啟點(diǎn)擊反饋 | boolean | false
|
is-link | 是否展示右側(cè)箭頭并開啟點(diǎn)擊反饋 | boolean | false
|
autofocus | 是否自動聚焦,iOS 系統(tǒng)不支持該屬性 | boolean | false
|
show-word-limit | 是否顯示字?jǐn)?shù)統(tǒng)計(jì),需要設(shè)置maxlength 屬性 |
boolean | false
|
error | 是否將輸入內(nèi)容標(biāo)紅 | boolean | false
|
error-message | 底部錯誤提示文案,為空時(shí)不展示 | string | - |
formatter | 輸入內(nèi)容格式化函數(shù) | Function | - |
format-trigger v2.8.7
|
格式化函數(shù)觸發(fā)的時(shí)機(jī),可選值為 onBlur
|
string | onChange
|
arrow-direction | 箭頭方向,可選值為 left up down
|
string | right
|
label-class | 左側(cè)文本額外類名 | any | - |
label-width | 左側(cè)文本寬度,默認(rèn)單位為px
|
number | string | 6.2em
|
label-align | 左側(cè)文本對齊方式,可選值為 center right
|
string | left
|
input-align | 輸入框?qū)R方式,可選值為 center right
|
string | left
|
error-message-align | 錯誤提示文案對齊方式,可選值為 center right
|
string | left
|
autosize | 是否自適應(yīng)內(nèi)容高度,只對 textarea 有效,
可傳入對象,如 { maxHeight: 100, minHeight: 50 }, 單位為 px
|
boolean | object | false
|
left-icon | 左側(cè)圖標(biāo)名稱或圖片鏈接 | string | - |
right-icon | 右側(cè)圖標(biāo)名稱或圖片鏈接 | string | - |
icon-prefix v2.5.3
|
圖標(biāo)類名前綴,同 Icon 組件的 class-prefix 屬性 | string | van-icon
|
rules v2.5.0
|
表單校驗(yàn)規(guī)則,詳見 Form 組件 | Rule[] | - |
autocomplete | input 標(biāo)簽原生的自動完成屬性 | string | - |
除下列事件外,F(xiàn)ield 默認(rèn)支持 Input 標(biāo)簽所有的原生事件
事件 | 說明 | 回調(diào)參數(shù) |
---|---|---|
input | 輸入框內(nèi)容變化時(shí)觸發(fā) | value: string (當(dāng)前輸入的值) |
focus | 輸入框獲得焦點(diǎn)時(shí)觸發(fā) | event: Event |
blur | 輸入框失去焦點(diǎn)時(shí)觸發(fā) | event: Event |
clear | 點(diǎn)擊清除按鈕時(shí)觸發(fā) | event: Event |
click | 點(diǎn)擊 Field 時(shí)觸發(fā) | event: Event |
click-input v2.8.1
|
點(diǎn)擊輸入?yún)^(qū)域時(shí)觸發(fā) | event: Event |
click-left-icon | 點(diǎn)擊左側(cè)圖標(biāo)時(shí)觸發(fā) | event: Event |
click-right-icon | 點(diǎn)擊右側(cè)圖標(biāo)時(shí)觸發(fā) | event: Event |
通過 ref 可以獲取到 Field 實(shí)例并調(diào)用實(shí)例方法,詳見組件實(shí)例方法。
方法名 | 說明 | 參數(shù) | 返回值 |
---|---|---|---|
focus | 獲取輸入框焦點(diǎn) | - | - |
blur | 取消輸入框焦點(diǎn) | - | - |
名稱 | 說明 |
---|---|
label | 自定義輸入框 label 標(biāo)簽 |
input | 自定義輸入框,使用此插槽后,與輸入框相關(guān)的屬性和事件將失效。
在 Form 組件進(jìn)行表單校驗(yàn)時(shí),會使用 input 插槽中子組件的 value ,而不是 Field 組件的 value 。 |
left-icon | 自定義輸入框頭部圖標(biāo) |
right-icon | 自定義輸入框尾部圖標(biāo) |
button | 自定義輸入框尾部按鈕 |
extra v2.8.2
|
自定義輸入框最右側(cè)的額外內(nèi)容 |
組件提供了下列 Less 變量,可用于自定義樣式,使用方法請參考主題定制。
名稱 | 默認(rèn)值 | 描述 |
---|---|---|
@field-label-width | 6.2em
|
- |
@field-label-color | @gray-7
|
- |
@field-label-margin-right | @padding-sm
|
- |
@field-input-text-color | @text-color
|
- |
@field-input-error-text-color | @red
|
- |
@field-input-disabled-text-color | @gray-5
|
- |
@field-placeholder-text-color | @gray-5
|
- |
@field-icon-size | 16px
|
- |
@field-clear-icon-size | 16px
|
- |
@field-clear-icon-color | @gray-5
|
- |
@field-right-icon-color | @gray-6
|
- |
@field-error-message-color | @red
|
- |
@field-error-message-font-size | 12px
|
- |
@field-text-area-min-height | 60px
|
- |
@field-word-limit-color | @gray-7
|
- |
@field-word-limit-font-size | @font-size-sm
|
- |
@field-word-limit-line-height | 16px
|
- |
@field-disabled-text-color | @gray-5
|
- |
HTML 原生的 type="number" 屬性在 iOS 和 Android 系統(tǒng)上都存在一定問題,比如 maxlength 屬性不生效、無法獲取到完整的輸入內(nèi)容等。因此設(shè)置 type 為 number 時(shí),F(xiàn)ield 不會使用原生的 type="number" 屬性,而是用現(xiàn)代瀏覽器支持的 inputmode 屬性來控制輸入鍵盤的類型。
清除按鈕監(jiān)聽是的移動端 Touch 事件,參見桌面端適配。
更多建議: