el-form 表单组件

el-form 是 Element Plus 提供的一个表单组件,用于创建和管理表单。它提供了丰富的功能,包括表单验证、表单重置、表单数据绑定等。下面是对 el-form 组件的详细解读:

基本用法

<el-form :model="form" :rules="rules" ref="formRef">
  <el-form-item label="用户名" prop="username">
    <el-input v-model="form.username" />
  </el-form-item>
  <el-form-item label="密码" prop="password">
    <el-input v-model="form.password" type="password" />
  </el-form-item>
  <el-button type="primary" @click="submitForm">提交</el-button>
  <el-button @click="resetForm">重置</el-button>
</el-form>

主要属性:

属性全部采用v-bind进行单向绑定,动态绑定 HTML 属性,即:数据—>组件属性,是单向绑定。

el-form 的 model 属性是一个普通的属性,用于传递表单数据对象,而不是一个表单输入元素,本身不存在输入能力,所以单向绑定即可。

v-model 用于实现表单输入元素的双向数据绑定。v-model 通常用于表单输入元素,而不是用于组件的属性绑定。

属性名描述类型默认值
model表单数据对象,用于绑定表单字段Object-
rules表单验证规则Object-
label-width表单域标签的宽度String-
label-position表单域标签的位置,可选值为 'left'、'right'、'top'String'right'
inline是否将表单内的表单项排列在一行Booleanfalse

子组件 el-form-item

el-form-itemel-form 的子组件,用于包裹表单输入组件,并可以添加标签和验证规则。

<el-form-item label="用户名" prop="username">
  <el-input v-model="form.username" />
</el-form-item>
属性名描述类型默认值
label表单域标签String-
prop对应表单域的字段,在验证规则中使用String-

表单验证

el-form 支持表单验证,通过 rules 属性定义验证规则

const rules = {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 3, max: 10, message: '用户名长度在 3 到 10 个字符', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, max: 18, message: '密码长度在 6 到 18 个字符', trigger: 'blur' }
  ]
}
验证规则描述
required是否必填
message验证失败时的提示信息
trigger触发验证的事件,可选值为 'blur'、'change'
min最小长度
max最大长度
pattern正则表达式验证

表单操作

提交表单
const submitForm = () => {
  formRef.value.validate((valid) => {
    if (valid) {
      // 验证通过,提交表单
      console.log('表单数据:', form)
    } else {
      console.log('验证失败')
      return false
    }
  })
}
重置表单
const resetForm = () => {
  formRef.value.resetFields()
}

示例代码

<template>
  <el-form
    :model="form"
    :rules="rules"
    ref="formRef"
    label-width="100px"
    label-position="right"
  >
    <el-form-item label="用户名" prop="username">
      <el-input v-model="form.username" />
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input v-model="form.password" type="password" />
    </el-form-item>
    <el-button type="primary" @click="submitForm">提交</el-button>
    <el-button @click="resetForm">重置</el-button>
  </el-form>
</template>

<script setup>
import { reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'

const formRef = ref(null)

const form = reactive({
  username: '',
  password: ''
})

const rules = reactive({
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 3, max: 10, message: '用户名长度在 3 到 10 个字符', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, max: 18, message: '密码长度在 6 到 18 个字符', trigger: 'blur' }
  ]
})

const submitForm = () => {
  formRef.value.validate((valid) => {
    if (valid) {
      ElMessage.success('提交成功')
      console.log('表单数据:', form)
    } else {
      ElMessage.error('验证失败')
      return false
    }
  })
}

const resetForm = () => {
  formRef.value.resetFields()
}
</script>

总结

el-form 组件是 Element Plus 中一个功能强大的表单组件,支持表单数据绑定、验证、重置等操作。通过合理的配置和使用,可以快速构建出功能完善的表单界面,提升开发效率和用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值