Field 输入框

使用指南

在 app.json 或 index.json 中引入组件

  1. "usingComponents": {
  2. "van-field": "path/to/vant-weapp/dist/field/index"
  3. }

代码演示

基础用法

  1. <van-cell-group>
  2. <van-field
  3. value="{{ value }}"
  4. placeholder="请输入用户名"
  5. border="{{ false }}"
  6. bind:change="onChange"
  7. />
  8. </van-cell-group>
  1. Page({
  2. data: {
  3. value: ''
  4. },
  5. onChange(event) {
  6. // event.detail 为当前输入的值
  7. console.log(event.detail);
  8. }
  9. });

自定义类型

根据type属性定义不同类型的输入框

  1. <van-cell-group>
  2. <van-field
  3. value="{{ username }}"
  4. required
  5. clearable
  6. label="用户名"
  7. icon="question-o"
  8. placeholder="请输入用户名"
  9. bind:click-icon="onClickIcon"
  10. />
  11. <van-field
  12. value="{{ password }}"
  13. type="password"
  14. label="密码"
  15. placeholder="请输入密码"
  16. required
  17. border="{{ false }}"
  18. />
  19. </van-cell-group>

禁用输入框

  1. <van-cell-group>
  2. <van-field
  3. value="输入框已禁用"
  4. label="用户名"
  5. left-icon="contact"
  6. disabled
  7. border="{{ false }}"
  8. />
  9. </van-cell-group>

错误提示

通过error或者error-message属性增加对应的错误提示

  1. <van-cell-group>
  2. <van-field
  3. value="{{ username }}"
  4. label="用户名"
  5. placeholder="请输入用户名"
  6. error
  7. />
  8. <van-field
  9. value="{{ phone }}"
  10. label="手机号"
  11. placeholder="请输入手机号"
  12. error-message="手机号格式错误"
  13. border="{{ false }}"
  14. />
  15. </van-cell-group>

高度自适应

对于 textarea,可以通过autosize属性设置高度自适应

  1. <van-cell-group>
  2. <van-field
  3. value="{{ message }}"
  4. label="留言"
  5. type="textarea"
  6. placeholder="请输入留言"
  7. autosize
  8. border="{{ false }}"
  9. />
  10. </van-cell-group>

插入按钮

通过 button slot 可以在输入框尾部插入按钮

  1. <van-cell-group>
  2. <van-field
  3. value="{{ sms }}"
  4. center
  5. clearable
  6. label="短信验证码"
  7. placeholder="请输入短信验证码"
  8. border="{{ false }}"
  9. use-button-slot
  10. >
  11. <van-button slot="button" size="small" type="primary">发送验证码</van-button>
  12. </van-field>
  13. </van-cell-group>

API

参数说明类型默认值
name在表单内提交时的标识符String-
label输入框左侧文本String-
value当前输入的值String | Number-
type可设置为任意原生类型, 如 number idcard textarea digitStringtext
fixed如果 type 为 textarea 且在一个 position:fixed 的区域,需要显示指定属性 fixed 为 trueBooleanfalse
focus获取焦点Booleanfalse
border是否显示内边框Booleantrue
disabled是否禁用输入框Booleanfalse
readonly是否只读Booleanfalse
clearable是否启用清除控件Booleanfalse
required是否显示表单必填星号Booleanfalse
title-width标题宽度String90px
maxlength最大输入长度,设置为 -1 的时候不限制最大长度Number-1
placeholder输入框为空时占位符String-
placeholder-style指定 placeholder 的样式String-
is-link是否展示右侧箭头并开启点击反馈Booleanfalse
error是否将输入内容标红Booleanfalse
error-message底部错误提示文案,为空时不展示String''
input-align输入框内容对齐方式,可选值为 center rightStringleft
autosize自适应内容高度,只对 textarea 有效Booleanfalse
icon输入框尾部图标名称或图片链接,可选值见 Icon 组件String-
left-icon输入框左侧图标名称或图片链接,可选值见 Icon 组件String-
confirm-type设置键盘右下角按钮的文字,仅在 type='text' 时生效Stringdone
confirm-hold点击键盘右下角按钮时是否保持键盘不收起,在 type='textarea' 时无效Booleanfalse
cursor-spacing输入框聚焦时底部与键盘的距离Number50
adjust-position键盘弹起时,是否自动上推页面Booleantrue
use-icon-slot是否使用 icon slotBooleanfalse
use-button-slot是否使用 button slotBooleanfalse
show-confirm-bar是否显示键盘上方带有”完成“按钮那一栏,只对 textarea 有效Booleantrue

Event

事件说明回调参数
bind:input输入内容时触发value: 当前输入值
bind:change输入内容时触发value: 当前输入值
bind:confirm点击完成按钮时触发value: 当前输入值
bind:click-icon点击尾部图标时触发-
bind:focus输入框聚焦时触发event.detail.value: 当前输入值; event.detail.height: 键盘高度(在基础库 1.9.90 起支持)
bind:blur输入框失焦时触发event.detail.value: 当前输入值; event.detail.cursor: 游标位置(如果 type 不为 textarea,值为 0)
bind:clear点击清空控件时触发-

Slot

名称说明
label自定义输入框标签,如果设置了label属性则不生效
left-icon自定义输入框头部图标,如果设置了left-icon属性则不生效
icon自定义输入框尾部图标,需要设置use-icon-slot属性,如果设置了icon属性则不生效
button自定义输入框尾部按钮,需要设置use-button-slot属性

外部样式类

类名说明
input-class输入框样式类
icon-class右侧图标样式类

更新日志

版本类型内容
0.0.1feature新增组件
0.1.1bugfix修复在 form 组件内无法获取值的问题
0.1.1bugfix修复 icon 插槽无法使用的问题
0.2.0feature新增 name 属性
0.2.1feature新增 title-width 属性
0.3.0bugfix修复 title 宽度错误的问题
0.3.2bugfix修复展示清除按钮时导致输入框高度变化的问题
0.3.3bugfix修复边框长度溢出的问题
0.3.3bugfix修复 input-align 属性不生效的问题
0.3.6bugfix修复 readonly 属性不生效的问题
0.3.6feature新增 placeholder-style 属性

原文: https://youzan.github.io/vant-weapp/#/field