Skip to content

t-form

Form 表单

组件介绍

表单组件,支持表单验证规则后端控制,支持form-item点击映射到input获取到焦点提升用户体验,支持表单下任意组件参与布局,支持自定义函数表单验证,支持自定义数据校验、长度校验证、数据大小判断,支持重置。

平台兼容

HarmonyH5AndroidiOS小程序UTS

基础用法

vue
<template>
  <t-form :model="formData" :rules="formRules" ref="formRef">
    <t-form-item label="用户名" prop="username" required>
      <t-input v-model="formData.username" placeholder="请输入用户名"></t-input>
    </t-form-item>
    <t-form-item label="密码" prop="password" required>
      <t-input v-model="formData.password" type="password" placeholder="请输入密码"></t-input>
    </t-form-item>
    <t-form-item label="邮箱" prop="email">
      <t-input v-model="formData.email" placeholder="请输入邮箱"></t-input>
    </t-form-item>
    <t-form-item label="手机号" prop="phone">
      <t-input v-model="formData.phone" placeholder="请输入手机号"></t-input>
    </t-form-item>
    <t-form-item>
      <t-button type="primary" @click="handleSubmit">提交</t-button>
      <t-button @click="handleReset">重置</t-button>
    </t-form-item>
  </t-form>
</template>

<script setup>
const formRef = ref(null);
const formData = ref({
  username: '',
  password: '',
  email: '',
  phone: ''
});

const formRules = ref({
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 2, max: 20, message: '用户名长度为2-20个字符', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, message: '密码长度至少6位', trigger: 'blur' }
  ],
  email: [
    { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
  ],
  phone: [
    { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
  ]
});

function handleSubmit() {
  if (formRef.value.validate()) {
    console.log('表单验证通过', formData.value);
    // 提交表单数据
  }
}

function handleReset() {
  formRef.value.reset();
}
</script>

Props

属性名类型默认值说明可选值
sizeString""组件尺寸large, medium, small, mini
typeString""组件类型info, primary, error, warning, success
disabledBooleanfalse组件是否禁用true, false
hoverBooleanfalse是否有点击效果true, false
pathString""点击组件后跳转的页面路径-
effectString""组件显示主题normal, dark, light, plain
showLabelBooleantrue统一设置表单子组合是否显示标题true, false
headerClassString""标题盒子的样式-
directionString"row"统一设置表单子项的布局方向row, column
rulesObject{}表单的验证规则-
rulesClassString""验证失败提示文字的样式-
labelClassString""标题标签的样式-
childClassString""统一设置子组件样式-
requiredAsteriskString"*"必填时的提示符-
requiredAsteriskClassString"mt-10"必填提示符的样式-
hideRequiredAsteriskBooleanfalse是否隐藏必填文本true, false
showMessageBooleantrue是否显示验证信息true, false
bottomLineBooleanfalse是否显示底部线条true, false
modelObject{}表单绑定的对象-

Events

事件名说明回调参数
click点击时触发-
transitionend动画结束时触发-
initFinished组件初始化完成触发组件的节点信息
touchstart触摸开始时触发触摸事件对象
touchend触摸结束时触发触摸事件对象
touchmove触摸移动时触发触摸事件对象
touchcancel触摸取消时触发触摸事件对象
reset重置表单时触发-

Methods

方法名说明参数返回值
validate验证表单Boolean
reset重置表单

Slots

插槽名说明
default表单内容插槽,用于放置t-form-item子组件

校验规则

规则类型说明示例
required必填{ required: true, message: '请输入用户名' }
min最小长度{ min: 6, message: '长度至少6位' }
max最大长度{ max: 20, message: '长度最多20位' }
pattern正则表达式{ pattern: /^1[3-9]\d{9}$/, message: '手机号格式错误' }
type数据类型{ type: 'email', message: '邮箱格式错误' }
validator自定义验证函数{ validator: (rule, value) => value > 0, message: '必须大于0' }