Skip to content
On this page

Form 表单

基本使用

切换密码显示的 bug:由于&&运算符的特性,导致图标无法更换

用户名
密码
基本使用
<template>
  <h-form
    style="width: 50%"
    :model="model"
    :rules="rules"
    layout="vertical"
    labelSize="sm"
    labelAlign="center"
    @submit="onSubmit"
    ref="loginForm"
  >
    <h-form-item label="用户名" field="username">
      <h-input v-model="model.username" type="text">
        <template #prefix>
          <h-icon name="user"></h-icon>
        </template>
      </h-input>
    </h-form-item>
    <h-form-item label="密码" field="password">
      <h-input v-model="model.password" type="text" show-password>
        <template #prefix>
          <h-icon name="unlock"></h-icon>
        </template>
      </h-input>
    </h-form-item>
    <h-form-item>
      <h-button type="primary">登录</h-button>
    </h-form-item>
  </h-form>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const model = ref({
  username: '张三',
  password: '123456'
})
const rules = ref({
  username: [{ required: true, message: '用户名不能为空' }],
  password: [
    { required: true, message: '密码不能为空' },
    { min: 6, max: 10, message: '密码长度在6-10之间' }
  ]
})
const loginForm = ref(null)
const onSubmit = () => {
  loginForm.value.validate((valid: Boolean) => {
    if (valid) {
      alert('登录成功')
    } else {
      alert('校验失败')
    }
  })
}
</script>

<style scoped lang="scss"></style>

组件 API

Attributes 属性

参数说明类型可选值默认值
layout设置label布局方式,有水平和垂直两种选择string'horizontal'| 'vertical''horizontal'
label-align设置label对齐方式string'start'| 'center' | 'end''start
label-size设置label大小string'sm'|'md'|'lg''md'
model设置form组件绑定的数据Object
rules设置form表单校验规则Object

Methods 方法

方法名说明类型
validate表单校验方法,获取表单实例后调用(callback?: (isValid: boolean, invalidFields?: ValidateFieldsError) => void) => Promise<boolean>

Events 事件

事件名说明类型
submit提交表单事件()=>{}

Slots 插槽

插槽名说明参数