Field 输入框

借助此组件,可以实现表单的输入, 有”text”和”textarea”类型的,此外,借助uView的pickeractionSheet组件可以快速实现上拉菜单,时间,地区选择等, 为表单解决方案的利器。

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序

基本使用

  • 如果是表单组(连在一起的有多个field组件),目前必须要结合uView的u-cell-group组件使用,可以给field表单组提供上下边框
  • 通过v-model,可以双向绑定输入框的值
  • 通过label设置输入框左边的提示文字
  • 通过placeholder指定个性化的提示语
  1. <template>
  2. <view>
  3. <u-cell-group>
  4. <u-field
  5. v-model="mobile"
  6. label="手机号"
  7. placeholder="请填写手机号"
  8. >
  9. </u-field>
  10. <u-field
  11. v-model="code"
  12. label="验证码"
  13. placeholder="请填写验证码"
  14. >
  15. </u-field>
  16. </u-cell-group>
  17. </view>
  18. </template>
  19. <script>
  20. export default {
  21. data() {
  22. return {
  23. mobile: '',
  24. code: ''
  25. }
  26. }
  27. }
  28. </script>

自定义输入框类型

我们可以通过type参数来自定义输入框的类型,如果为text(默认)内部为input输入框,如果为textarea值,内部为textarea输入框,相比input输入框, 它的默认高度约为两个input的高度,且可以换行,同时组件高度也会自动增高,适用于需要多行输入的场景。

  1. <template>
  2. <view class="">
  3. <u-field
  4. v-model="mobile"
  5. label="手机号"
  6. placeholder="请填写手机号"
  7. >
  8. </u-field>
  9. <u-field
  10. v-model="mobile"
  11. label="手机号"
  12. placeholder="请填写手机号"
  13. type="textarea"
  14. >
  15. </u-field>
  16. </view>
  17. </template>

必填和错误提示

  • 通过设置required,可以给输入框左边添加一个红色的”*“号,它只起提示作用,uView内部不会判断用户是否输入了值,您需要提交的时候,通过v-model绑定的值自行判断
  • 通过设置error-message,会在输入框下方给用红色给出错误提示
  1. <template>
  2. <view class="">
  3. <u-field
  4. v-model="mobile"
  5. label="手机号"
  6. required
  7. :error-message="errorMessage"
  8. >
  9. </u-field>
  10. </view>
  11. </template>
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. errorMessage: '剑未配妥,出门已是江湖'
  17. }
  18. }
  19. }
  20. </script>

在输入框尾部插入按钮

此为在表单填写时,可能需要用户发送验证码的场景,可以通过slot插入一个uView的button组件,通过结合uView的VerificationCode, 可以简单,迅速的将功能集成

  1. <template>
  2. <view class="">
  3. <u-cell-group>
  4. <u-field
  5. v-model="code"
  6. label="验证码"
  7. placeholder="请填写验证码"
  8. >
  9. <u-button size="mini" slot="button" type="success" @tap="getCode">{{codeText}}</u-button>
  10. </u-field>
  11. <u-verification-code ref="uCode" @change="codeChange"></u-verification-code>
  12. </u-cell-group>
  13. </view>
  14. </template>
  15. <script>
  16. export default {
  17. data() {
  18. return {
  19. mobile: '',
  20. code: '',
  21. codeText: ''
  22. }
  23. },
  24. methods: {
  25. codeChange(text) {
  26. this.codeText = text;
  27. },
  28. getCode() {
  29. if(this.$refs.uCode.canGetCode) {
  30. // 模拟向后端请求验证码
  31. uni.showLoading({
  32. title: '正在获取验证码'
  33. })
  34. setTimeout(() => {
  35. uni.hideLoading();
  36. // 通知验证码组件内部开始倒计时
  37. this.$refs.uCode.start();
  38. }, 1000);
  39. }else {
  40. this.$u.toast('倒计时结束后再发送');
  41. }
  42. }
  43. }
  44. }
  45. </script>

如何与Picker或者actionSheet等组件结合

某些场景,比如需要用用户选择性别,或者时间,地区选择等,我们可以结合uView的ActionSheetPicker组件解决, 这种情况,一般都是要求field组件是不可输入内容的,我们需要设置disabled参数为true,既然是需要弹出选择框,field组件右边应该要有一个实心向下的 三角形图标,配置为right-iconarrow-down-fill,同时监听click即可。这一切,uView都帮您想到,并且做好了。

  1. <template>
  2. <view class="">
  3. <u-cell-group>
  4. <u-field @click="showAction" v-model="sex"
  5. :disabled="true" label="性别" placeholder="请选择性别"
  6. right-icon="arrow-down-fill"
  7. >
  8. </u-field>
  9. </u-cell-group>
  10. <u-action-sheet @click="clickItem" :list="sexList" v-model="show"></u-action-sheet>
  11. </view>
  12. </template>
  13. <script>
  14. export default {
  15. data() {
  16. return {
  17. sex: '',
  18. sexList: [
  19. {
  20. text: '男',
  21. },
  22. {
  23. text: '女'
  24. },
  25. {
  26. text: '保密'
  27. }
  28. ],
  29. show: false
  30. };
  31. },
  32. methods: {
  33. showAction() {
  34. this.show = true;
  35. },
  36. clickItem(index) {
  37. this.sex = this.sexList[index].text;
  38. }
  39. }
  40. };
  41. </script>

API

Props

参数说明类型默认值可选值
type输入框的类型Stringtexttextarea
iconlabel左边的图标,限uView的图标名称String--
right-icon输入框右边的图标名称,限uView的图标名称String--
required是否必填,左边您显示红色”*”号Booleanfalsetrue
label输入框左边的文字提示String--
password是否密码输入方式(用点替换文字),typetext时有效Booleanfalsetrue
clearable是否显示右侧清空内容的图标控件(输入框有内容,且获得焦点时才显示),点击可清空输入框内容Booleantruefalse
label-widthlabel的宽度,单位rpxNumber | String130-
label-alignlabel的文字对齐方式Stringleftcenter / right
input-align输入框内容对齐方式Stringleftcenter / right
icon-color左边通过icon配置的图标的颜色String#606266-
clear-size清除图标的大小,单位rpxNumber | String30-
field-style输入框的样式,对象形式Object--
auto-height是否自动增高输入区域,typetextarea时有效Booleantruefalse
error-message显示的错误提示内容,如果为空字符串或者false,则不显示错误信息String \ Boolean--
placeholder输入框的提示文字String--
placeholder-styleplaceholder的样式(内联样式,字符串),如”color: #ddd”String--
focus是否自动获得焦点Booleanfalsetrue
fixed如果typetextarea,且在一个”position:fixed”的区域,需要指明为trueBooleanfalsetrue
disabled是否不可输入Booleanfalsetrue
maxlength最大输入长度,设置为 -1 的时候不限制最大长度Number | String140-
confirm-type设置键盘右下角按钮的文字,仅在type=”text”时生效Stringdone-

CellItem Slot

名称说明
left自定义左侧标题部分的内容
icon自定义左侧的图标
right自定义右侧内容

CellItem Events

事件名说明回调参数
input输入框内容发生变化时触发value:输入框的内容,建议通过v-model双向绑定输入值,而不是监听此事件的形式
focus输入框获得焦点时触发-
blur输入框失去焦点时触发-
confirm点击完成按钮时触发value:输入框的内容,建议通过v-model双向绑定输入值,而不是监听此事件的形式
right-icon-click通过right-icon生成的图标被点击时触发
click输入框被点击或者通过right-icon生成的图标被点击时触发,这样设计是考虑到传递右边的图标,一般都为需要弹出”picker”等操作时的场景,点击倒三角图标,理应发出此事件,见上方说明-