Skip to content

r-field

r-field输入框,用户可以在文本框内输入或编辑文字。

示例

vue
<template>
  <view class="content">
    <!-- <r-badge :content="20" /> -->

    <r-config-provider>
      <view style="padding: 20px">基础用法</view>
      <r-cell-group inset>
        <r-field
          v-model:value="value"
          label="文本"
          placeholder="请输入用户名"
        />
      </r-cell-group>
      <view style="padding: 20px">自定义类型</view>
      <r-cell-group inset>
        <!-- 输入任意文本 -->
        <r-field v-model:value="text" label="文本" />
        <!-- 输入手机号,调起手机号键盘 -->
        <r-field v-model:value="tel" type="tel" label="手机号" />
        <!-- 允许输入正整数,调起纯数字键盘 -->
        <r-field v-model:value="digit" type="digit" label="整数" />
        <!-- 允许输入数字,调起带符号的纯数字键盘 -->
        <r-field v-model:value="number" type="number" label="数字" />
        <!-- 输入密码 -->
        <r-field v-model:value="password" type="password" label="密码" />
      </r-cell-group>

      <view style="padding: 20px">禁用输入框</view>
      <r-cell-group inset>
        <r-field label="文本" v-model:value="readonlyValue" readonly />
        <r-field label="文本" v-model:value="disabledValue" disabled />
      </r-cell-group>
      <view style="padding: 20px">显示图标</view>
      <r-cell-group inset>
        <r-field
          v-model:value="value1"
          label="文本"
          left-icon="smile-o"
          right-icon="warning-o"
          placeholder="显示图标"
        />
        <r-field
          v-model:value="value2"
          clearable
          label="文本"
          left-icon="music-o"
          placeholder="显示清除图标"
        />
      </r-cell-group>

      <view style="padding: 20px">必填星号</view>
      <r-cell-group inset>
        <r-field
          v-model:value="username"
          required
          label="用户名"
          placeholder="请输入用户名"
        />
        <r-field
          v-model:value="phone"
          required
          label="手机号"
          placeholder="请输入手机号"
        />
      </r-cell-group>

      <view style="padding: 20px">自动展示星号</view>
      <r-form>
        <r-field
          v-model:value="username"
          name="username"
          :rules="[{ required: true }]"
          label="用户名"
          placeholder="请输入用户名"
        />
        <r-field
          v-model:value="phone"
          name="phone"
          :rules="[{ required: false }]"
          label="手机号"
          placeholder="请输入手机号"
        />
      </r-form>
      <view style="padding: 20px">错误提示</view>
      <r-cell-group inset>
        <r-field
          v-model:value="username"
          error
          label="用户名"
          placeholder="请输入用户名"
        />
        <r-field
          v-model:value="phone"
          label="手机号"
          placeholder="请输入手机号"
          error-message="手机号格式错误"
        />
      </r-cell-group>
      <view style="padding: 20px">插入按钮</view>
      <r-cell-group inset>
        <r-field
          v-model:value="sms"
          center
          clearable
          label="短信验证码"
          placeholder="请输入短信验证码"
        >
          <template #button>
            <r-button size="small" type="primary">发送验证码</r-button>
          </template>
        </r-field>
      </r-cell-group>
      <view style="padding: 20px">格式化输入内容</view>
      <r-cell-group inset>
        <r-field
          v-model:value="value1"
          label="文本"
          :formatter="formatter"
          placeholder="在输入时执行格式化"
        />
        <r-field
          v-model:value="value2"
          label="文本"
          :formatter="formatter"
          format-trigger="onBlur"
          placeholder="在失焦时执行格式化"
        />
      </r-cell-group>

      <view style="padding: 20px">使用textarea</view>
      <r-cell-group inset>
        <r-field
          v-model:value="message"
          rows="1"
          label="留言"
          type="textarea"
          placeholder="请输入留言"
        />
      </r-cell-group>

      <view style="padding: 20px">显示字数统计</view>
      <r-cell-group inset>
        <r-field
          v-model:value="message"
          rows="2"
          autosize
          label="留言"
          type="textarea"
          maxlength="50"
          placeholder="请输入留言"
          show-word-limit
        />
      </r-cell-group>

      <view style="padding: 20px">输入框内容对齐</view>
      <r-cell-group inset>
        <r-field
          v-model:value="value"
          label="文本"
          placeholder="输入框内容右对齐"
          input-align="right"
        />
      </r-cell-group>

      <view style="padding: 20px">输入框文本位置</view>
      <r-cell-group inset>
        <r-field
          v-model:value="value"
          label="文本"
          placeholder="顶部对齐"
          label-align="top"
        />
        <r-field
          v-model:value="value2"
          label="文本"
          placeholder="左对齐"
          label-align="left"
        />
        <r-field
          v-model:value="value3"
          label="文本"
          placeholder="居中对齐"
          label-align="center"
        />
        <r-field
          v-model:value="value4"
          label="文本"
          placeholder="右对齐"
          label-align="right"
        />
      </r-cell-group>
    </r-config-provider>
  </view>
</template>
<script setup>
import { ref } from "vue";
const value = ref("");
const tel = ref("");
const text = ref("");
const digit = ref("");
const number = ref("");
const password = ref("");
const value1 = ref("");
const value2 = ref("");
const value3 = ref("");
const value4 = ref("");
const username = ref("");
const phone = ref("");
const message = ref("");
const sms = ref("");
const readonlyValue = ref("输入框只读");
const disabledValue = ref("输入框已禁用");
// 过滤输入的数字
const formatter = (value) => value.replace(/\d/g, "");
</script>

API

Props

名称说明类型默认值可选值
value当前输入的值any''-
label输入框左侧文本String''-
name名称,作为提交表单时的标识符String''-
type输入框类型Stringtexttext number idcard digit tel password safe-password nickname
size大小Stringnormallarge normal
maxlength输入的最大字符数Number140-
placeholder输入框占位提示文字String''-
border是否显示内边框Booleantruefalse
disabled是否禁用输入框Booleanfalsetrue
readonly是否为只读状态,只读状态下无法输入内容Booleanfalsetrue
colon是否在 label 后面添加冒号Booleanfalsetrue
required是否显示表单必填星号Booleanfalsetrue
center是否使内容垂直居中Booleanfalsetrue
clearable是否启用清除图标Booleanfalsetrue
clearIcon清除图标名称,等同于 r-icon 组件的 name 属性Stringclear-
clearPrefix清除图标前缀类名,等同于 r-icon 组件的 preifx 属性Stringvan-iconiconfont
clearTrigger显示清除图标的时机,always 表示输入框不为空时展示,focus 表示输入框聚焦且不为空时展示Stringfocusfocus always
isLink是否展示右侧箭头Booleanfalsetrue
showWordLimit是否显示字数统计,需要设置 maxlength 属性Booleanfalsetrue
error是否将输入内容标红Booleanfalsetrue
errorMessage底部错误提示文案,为空时不展示String''-
errorMessageAlign错误提示文案对齐方式Stringleftcenter right left
formatter输入内容格式化函数Function
formatTrigger格式化函数触发的时机String-onBlur onChange
arrowDirection箭头方向Stringrightleft up down right
labelClass左侧文本额外类名String--
labelWidth左侧文本宽度String6.2em
labelAlign左侧文本对齐方式Stringleftcenter right top left
inputAlign输入框对齐方式Stringleftcenter right left
leftIcon左侧图标名称,等同于 r-icon 组件的 name 属性String''-
rightIcon右侧图标名称,等同于 r-icon 组件的 name 属性String''-
iconPrefix左/右侧图标类名前缀,等同于 r-icon 组件的 preifx 属性Stringvan-iconiconfont
rules表单校验规则Array[]-
themeNamer-theme 主题名称Stringdefault
其他uniapp input textarea的属性值

Slots

名称说明参数
label自定义输入框左侧文本
input自定义输入框,使用此插槽后,与输入框相关的属性和事件将失效
leftIcon自定义输入框头部图标
rightIcon自定义输入框尾部图标
button自定义输入框尾部按钮
errorMessage自定义底部错误提示文案
extra自定义输入框最右侧的额外内容-

Events

名称说明参数
update:value输入框内容变化时触发value (当前输入的值)
change输入框内容变化后触发value (当前输入的值)
focus输入框获得焦点时触发event
blur输入框失去焦点时触发event
clear点击清除按钮时触发event
click点击组件时触发event
clickInput点击输入区域时触发event
clickLeftIcon点击左侧图标时触发event
clickRightIcon点击右侧图标时触发event
其他uniapp input textarea的事件

更多组件,请前往rainui