99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Vant3 Field 輸入框

2021-09-07 16:03 更新

介紹

用戶可以在文本框內(nèi)輸入或編輯文字。

實(shí)例演示

引入

通過(guò)以下方式來(lái)全局注冊(cè)組件,更多注冊(cè)方式請(qǐng)參考組件注冊(cè)

import { createApp } from 'vue';
import { Field, CellGroup } from 'vant';

const app = createApp();
app.use(Field);
app.use(CellGroup);

代碼演示

基礎(chǔ)用法

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

基礎(chǔ)用法

<!-- 可以使用 CellGroup 作為容器 -->
<van-cell-group inset>
  <van-field v-model="value" label="文本" placeholder="請(qǐng)輸入用戶名" />
</van-cell-group>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref('');
    return { value };
  },
};

自定義類型

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

自定義類型

<van-cell-group inset>
  <!-- 輸入任意文本 -->
  <van-field v-model="state.text" label="文本" />
  <!-- 輸入手機(jī)號(hào),調(diào)起手機(jī)號(hào)鍵盤 -->
  <van-field v-model="state.tel" type="tel" label="手機(jī)號(hào)" />
  <!-- 允許輸入正整數(shù),調(diào)起純數(shù)字鍵盤 -->
  <van-field v-model="state.digit" type="digit" label="整數(shù)" />
  <!-- 允許輸入數(shù)字,調(diào)起帶符號(hào)的純數(shù)字鍵盤 -->
  <van-field v-model="state.number" type="number" label="數(shù)字" />
  <!-- 輸入密碼 -->
  <van-field v-model="state.password" type="password" label="密碼" />
</van-cell-group>
import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      tel: '',
      text: '',
      digit: '',
      number: '',
      password: '',
    });

    return { state };
  },
};

禁用輸入框

通過(guò) readonly 將輸入框設(shè)置為只讀狀態(tài),通過(guò) disabled 將輸入框設(shè)置為禁用狀態(tài)。

禁用輸入框

<van-cell-group inset>
  <van-field label="文本" model-value="輸入框只讀" readonly />
  <van-field label="文本" model-value="輸入框已禁用" disabled />
</van-cell-group>

顯示圖標(biāo)

通過(guò) left-icon 和 right-icon 配置輸入框兩側(cè)的圖標(biāo),通過(guò)設(shè)置 clearable 在輸入過(guò)程中展示清除圖標(biāo)。

顯示圖標(biāo)

<van-cell-group inset>
  <van-field
    v-model="state.value1"
    label="文本"
    left-icon="smile-o"
    right-icon="warning-o"
    placeholder="顯示圖標(biāo)"
  />
  <van-field
    v-model="state.value2"
    clearable
    label="文本"
    left-icon="music-o"
    placeholder="顯示清除圖標(biāo)"
  />
</van-cell-group>
import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      value1: '',
      value2: '123',
    });

    return { state };
  },
};

錯(cuò)誤提示

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

錯(cuò)誤提示

<van-cell-group inset>
  <van-field
    v-model="username"
    error
    required
    label="用戶名"
    placeholder="請(qǐng)輸入用戶名"
  />
  <van-field
    v-model="phone"
    required
    label="手機(jī)號(hào)"
    placeholder="請(qǐng)輸入手機(jī)號(hào)"
    error-message="手機(jī)號(hào)格式錯(cuò)誤"
  />
</van-cell-group>

插入按鈕

通過(guò) button 插槽可以在輸入框尾部插入按鈕。

插入按鈕

<van-cell-group inset>
  <van-field
    v-model="sms"
    center
    clearable
    label="短信驗(yàn)證碼"
    placeholder="請(qǐng)輸入短信驗(yàn)證碼"
  >
    <template #button>
      <van-button size="small" type="primary">發(fā)送驗(yàn)證碼</van-button>
    </template>
  </van-field>
</van-cell-group>

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

通過(guò) formatter 屬性可以對(duì)輸入的內(nèi)容進(jìn)行格式化,通過(guò) format-trigger 屬性可以指定執(zhí)行格式化的時(shí)機(jī),默認(rèn)在輸入時(shí)進(jìn)行格式化。

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

<van-cell-group inset>
  <van-field
    v-model="state.value1"
    label="文本"
    :formatter="formatter"
    placeholder="在輸入時(shí)執(zhí)行格式化"
  />
  <van-field
    v-model="state.value2"
    label="文本"
    :formatter="formatter"
    format-trigger="onBlur"
    placeholder="在失焦時(shí)執(zhí)行格式化"
  />
</van-cell-group>
import { reactive } from 'vue';

export default {
  setup() {
    const state = reactive({
      value1: '',
      value2: '',
    });
    // 過(guò)濾輸入的數(shù)字
    const formatter = (value) => value.replace(/\d/g, '');

    return {
      state,
      formatter,
    };
  },
};

高度自適應(yīng)

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

高度自適應(yīng)

<van-cell-group inset>
  <van-field
    v-model="message"
    rows="1"
    autosize
    label="留言"
    type="textarea"
    placeholder="請(qǐng)輸入留言"
  />
</van-cell-group>

顯示字?jǐn)?shù)統(tǒng)計(jì)

設(shè)置 maxlength 和 show-word-limit 屬性后會(huì)在底部顯示字?jǐn)?shù)統(tǒng)計(jì)。

字?jǐn)?shù)統(tǒng)計(jì)

<van-cell-group inset>
  <van-field
    v-model="message"
    rows="2"
    autosize
    label="留言"
    type="textarea"
    maxlength="50"
    placeholder="請(qǐng)輸入留言"
    show-word-limit
  />
</van-cell-group>

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

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

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

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

API

Props

參數(shù) 說(shuō)明 類型 默認(rèn)值
v-model 當(dāng)前輸入的值 number | string -
label 輸入框左側(cè)文本 string -
name 名稱,提交表單的標(biāo)識(shí)符 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 是否為只讀狀態(tài),只讀狀態(tài)下無(wú)法輸入內(nèi)容 boolean false
colon 是否在 label 后面添加冒號(hào) boolean false
required 是否顯示表單必填星號(hào) boolean false
center 是否使內(nèi)容垂直居中 boolean false
clearable 是否啟用清除圖標(biāo),點(diǎn)擊清除圖標(biāo)后會(huì)清空輸入框 boolean false
clear-icon v3.0.12 清除圖標(biāo)名稱或圖片鏈接 string clear
clear-trigger 顯示清除圖標(biāo)的時(shí)機(jī),always 表示輸入框不為空時(shí)展示,
focus 表示輸入框聚焦且不為空時(shí)展示
string focus
clickable 是否開啟點(diǎn)擊反饋 boolean false
is-link 是否展示右側(cè)箭頭并開啟點(diǎn)擊反饋 boolean false
autofocus 是否自動(dòng)聚焦,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 底部錯(cuò)誤提示文案,為空時(shí)不展示 string -
error-message-align 錯(cuò)誤提示文案對(duì)齊方式,可選值為 center right string left
formatter 輸入內(nèi)容格式化函數(shù) (val: string) => string -
format-trigger 格式化函數(shù)觸發(fā)的時(shí)機(jī),可選值為 onBlur string onChange
arrow-direction 箭頭方向,可選值為 left up down string right
label-class 左側(cè)文本額外類名 string | Array | object -
label-width 左側(cè)文本寬度,默認(rèn)單位為 px number | string 6.2em
label-align 左側(cè)文本對(duì)齊方式,可選值為 center right string left
input-align 輸入框?qū)R方式,可選值為 center right string left
autosize 是否自適應(yīng)內(nèi)容高度,只對(duì) textarea 有效,
可傳入對(duì)象,如 { maxHeight: 100, minHeight: 50 },
單位為px
boolean | object false
left-icon 左側(cè)圖標(biāo)名稱或圖片鏈接 string -
right-icon 右側(cè)圖標(biāo)名稱或圖片鏈接 string -
icon-prefix 圖標(biāo)類名前綴,同 Icon 組件的 class-prefix 屬性 string van-icon
rules 表單校驗(yàn)規(guī)則,詳見 Form 組件 Rule[] -
autocomplete v3.0.3 input 標(biāo)簽原生的自動(dòng)完成屬性 string -

Events

事件 說(shuō)明 回調(diào)參數(shù)
update:model-value 輸入框內(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: MouseEvent
click 點(diǎn)擊組件時(shí)觸發(fā) event: MouseEvent
click-input 點(diǎn)擊輸入?yún)^(qū)域時(shí)觸發(fā) event: MouseEvent
click-left-icon 點(diǎn)擊左側(cè)圖標(biāo)時(shí)觸發(fā) event: MouseEvent
click-right-icon 點(diǎn)擊右側(cè)圖標(biāo)時(shí)觸發(fā) event: MouseEvent

方法

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

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

Slots

名稱 說(shuō)明
label 自定義輸入框左側(cè)文本
input 自定義輸入框,使用此插槽后,與輸入框相關(guān)的屬性和事件將失效。
在 Form 組件進(jìn)行表單校驗(yàn)時(shí),會(huì)使用 input 插槽中子組件的 value,而不是 Field 組件的 value。
left-icon 自定義輸入框頭部圖標(biāo)
right-icon 自定義輸入框尾部圖標(biāo)
button 自定義輸入框尾部按鈕
extra 自定義輸入框最右側(cè)的額外內(nèi)容

主題定制

樣式變量

組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請(qǐng)參考 ConfigProvider 組件。

名稱 默認(rèn)值 描述
--van-field-label-width 6.2em -
--van-field-label-color var(--van-gray-7) -
--van-field-label-margin-right var(--van-padding-sm) -
--van-field-input-text-color var(--van-text-color) -
--van-field-input-error-text-color var(--van-danger-color) -
--van-field-input-disabled-text-color var(--van-gray-5) -
--van-field-placeholder-text-color var(--van-gray-5) -
--van-field-icon-size 16px -
--van-field-clear-icon-size 16px -
--van-field-clear-icon-color var(--van-gray-5) -
--van-field-right-icon-color var(--van-gray-6) -
--van-field-error-message-color var(--van-danger-color) -
--van-field-error-message-text-color 12px -
--van-field-text-area-min-height 60px -
--van-field-word-limit-color var(--van-gray-7) -
--van-field-word-limit-font-size var(--van-font-size-sm) -
--van-field-word-limit-line-height 16px -
--van-field-disabled-text-color var(--van-gray-5) -
--van-field-required-mark-color var(--van-red) -

常見問(wèn)題

設(shè)置 type 為 number 后,為什么 input 標(biāo)簽的類型仍為 text?

HTML 原生的 type="number" 屬性在 iOS 和 Android 系統(tǒng)上都存在一定問(wèn)題,比如 maxlength 屬性不生效、無(wú)法獲取到完整的輸入內(nèi)容等。因此設(shè)置 type 為 number 時(shí),F(xiàn)ield 不會(huì)使用原生的 type="number" 屬性,而是用現(xiàn)代瀏覽器支持的 inputmode 屬性來(lái)控制輸入鍵盤的類型。

在桌面端點(diǎn)擊清除按鈕無(wú)效?

清除按鈕監(jiān)聽是的移動(dòng)端 Touch 事件,參見桌面端適配。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)