Vant Field 輸入框

2022-05-31 11:57 更新

介紹

表單中的輸入框組件

引入

import Vue from 'vue';
import { Field } from 'vant';

Vue.use(Field);

代碼演示

基礎(chǔ)用法

可以通過v-model雙向綁定輸入框的值,通過placeholder設(shè)置占位提示文字

<!-- Field 是基于 Cell 實現(xiàn)的,可以使用 CellGroup 作為父元素來提供外邊框。 -->
<van-cell-group>
  <van-field v-model="value" placeholder="請輸入用戶名" />
</van-cell-group>
export default {
  data() {
    return {
      value: ''
    };
  }
}

自定義類型

根據(jù)type屬性定義不同類型的輸入框,默認值為text

<!-- 輸入任意文本 -->
<van-field v-model="text" label="文本" />
<!-- 輸入手機號,調(diào)起手機號鍵盤 -->
<van-field v-model="tel" type="tel" label="手機號" />
<!-- 允許輸入整數(shù),調(diào)起數(shù)字鍵盤 -->
<van-field v-model="digit" type="digit" label="整數(shù)" />
<!-- 允許輸入數(shù)字,調(diào)起全鍵盤 -->
<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è)的圖標,通過設(shè)置clearable在輸入過程中展示清除圖標

<van-cell-group>
  <van-field
    v-model="value1"
    label="文本"
    left-icon="smile-o"
    right-icon="warning-o"
    placeholder="顯示圖標"
  />
  <van-field
    v-model="value2"
    clearable
    label="文本"
    left-icon="music-o"
    placeholder="顯示清除圖標"
  />
</van-cell-group>
export default {
  data() {
    return {
      value1: '',
      value2: '123'
    };
  }
};

錯誤提示

設(shè)置required屬性表示這是一個必填項,可以配合error或error-message屬性顯示對應(yīng)的錯誤提示

<van-cell-group>
  <van-field
    v-model="username"
    error
    required
    label="用戶名"
    placeholder="請輸入用戶名"
  />
  <van-field
    v-model="phone"
    required
    label="手機號"
    placeholder="請輸入手機號"
    error-message="手機號格式錯誤"
  />
</van-cell-group>

插入按鈕

通過 button 插槽可以在輸入框尾部插入按鈕

<van-field
  v-model="sms"
  center
  clearable
  label="短信驗證碼"
  placeholder="請輸入短信驗證碼"
>
  <van-button slot="button" size="small" type="primary">發(fā)送驗證碼</van-button>
</van-field>

格式化輸入內(nèi)容

通過formatter屬性可以對輸入的內(nèi)容進行格式化

<van-field
  v-model="value"
  label="文本"
  :formatter="formatter"
  placeholder="格式化輸入內(nèi)容"
/>
export default {
  data() {
    return {
      value: ''
    };
  },
  methods: {
    formatter(value) {
      // 過濾輸入的數(shù)字
      return value.replace(/\d/g, '');
    }
  }
}

高度自適應(yīng)

對于 textarea,可以通過autosize屬性設(shè)置高度自適應(yīng)

<van-field
  v-model="message"
  rows="1"
  autosize
  label="留言"
  type="textarea"
  placeholder="請輸入留言"
/>

顯示字數(shù)統(tǒng)計

設(shè)置maxlength和show-word-limit屬性后會在底部顯示字數(shù)統(tǒng)計

<van-field
  v-model="message"
  rows="2"
  autosize
  label="留言"
  type="textarea"
  maxlength="50"
  placeholder="請輸入留言"
  show-word-limit
/>

輸入框內(nèi)容對齊

通過input-align屬性可以設(shè)置輸入框內(nèi)容的對齊方式,可選值為center、right

<van-field
  v-model="value"
  :label="文本"
  :placeholder="輸入框內(nèi)容右對齊"
  input-align="right"
/>

API

Props

參數(shù)說明類型默認值
label輸入框左側(cè)文本string-
value當前輸入的值number | string-
type輸入框類型, 可選值為 tel digit
number textarea password 等
stringtext
size大小,可選值為 largestring-
maxlength輸入的最大字符數(shù)number | string-
placeholder占位提示文字string-
border是否顯示內(nèi)邊框booleantrue
disabled是否禁用輸入框booleanfalse
readonly是否只讀booleanfalse
required是否顯示表單必填星號booleanfalse
clearable是否啟用清除控件booleanfalse
clickable是否開啟點擊反饋booleanfalse
is-link是否展示右側(cè)箭頭并開啟點擊反饋booleanfalse
autofocus是否自動聚焦,iOS 系統(tǒng)不支持該屬性booleanfalse
show-word-limit v2.2.8是否顯示字數(shù)統(tǒng)計,需要設(shè)置maxlength屬性booleanfalse
error是否將輸入內(nèi)容標紅booleanfalse
formatter v2.4.2輸入內(nèi)容格式化函數(shù)Function-
arrow-direction v2.0.4箭頭方向,可選值為 left up downstringright
error-message底部錯誤提示文案,為空時不展示string''
label-class左側(cè)文本額外類名any-
label-width左側(cè)文本寬度,默認單位為pxnumber | string90px
label-align左側(cè)文本對齊方式,可選值為 center rightstringleft
input-align輸入框內(nèi)容對齊方式,可選值為 center rightstringleft
error-message-align錯誤提示文案對齊方式,可選值為 center rightstringleft
autosize是否自適應(yīng)內(nèi)容高度,只對 textarea 有效,
可傳入對象,如 { maxHeight: 100, minHeight: 50 },
單位為px
boolean | objectfalse
left-icon左側(cè) 圖標名稱 或圖片鏈接string-
right-icon右側(cè) 圖標名稱 或圖片鏈接string-

Events

除下列事件外,F(xiàn)ield 默認支持 Input 標簽所有的原生事件

事件說明回調(diào)參數(shù)
input輸入框內(nèi)容變化時觸發(fā)value: 輸入框當前值
focus輸入框獲得焦點時觸發(fā)event: Event
blur輸入框失去焦點時觸發(fā)event: Event
clear點擊清除按鈕時觸發(fā)event: Event
click點擊時觸發(fā)event: Event
click-left-icon點擊左側(cè)圖標時觸發(fā)event: Event
click-right-icon點擊右側(cè)圖標時觸發(fā)event: Event

方法

通過 ref 可以獲取到 Field 實例并調(diào)用實例方法,詳見 組件實例方法

方法名說明參數(shù)返回值
focus獲取輸入框焦點--
blur取消輸入框焦點--

Slots

名稱說明
label自定義輸入框標簽
input自定義輸入框,使用此插槽后,與輸入框相關(guān)的屬性和事件將失效
left-icon自定義輸入框頭部圖標
right-icon自定義輸入框尾部圖標
button自定義輸入框尾部按鈕


實例演示

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號