vue3+Element-plus表单举例

一、安装vue3脚手架, npm create vue@latest
详细查看官网https://cn.vuejs.org/guide/quick-start.html

在这里插入图片描述
二、下载Element-plus
官网:https://element-plus.gitee.io/zh-CN/component/overview.html

npm i element-plus@latest

如果需要用到element-plus的图标,我们要把图标一起下下来

npm install @element-plus/icons-vue

在main.js中全局引入
在这里插入图片描述
示例:
在这里插入图片描述

<script setup>
  import { ref ,reactive } from 'vue';
  const minData = reactive({
    list_data:[{
      name:'张三',
      password:'12345',
      email:'1211@qq.com'
    },{
      name:'李四',
      password:'123456',
      email:'1211666@qq.com'
    }]
  })

  const form = reactive({
    name: '',
    password: '',
    email: ''
  })
  const rules = {
    name: [
      { required: true, message: '请输入用户名', trigger: 'blur' },
      { min: 5, max: 10, message: '用户名必须是5-10位字符', trigger: 'blur' }
    ],
    password: [
      { required: true, message: '请输入密码', trigger: 'blur' },
    ],
    email: [
      { required: true, message: '请输入邮箱', trigger: 'blur' },
      { validator: (rule, value, callback)=>{
        if (value === '')
            callback();
        else {
            if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value)) {
                callback(new Error('邮件地址无效'));
            } else
                callback();
        }
      },trigger: 'blur'},
    ]
  }
  const ruleFormRef = ref();
  //新增
  const onSubmit = (formName)=>{
    formName.validate((valid) => {
        if (valid) {
            minData.list_data.push(form);
        } else {
            return false;
        }
    });
  }
  //清除
  const reset = ()=>{
    Object.keys(form).map(key => {
      delete form[key]
    })
  }
</script>

<template>
  <el-main>
    <div>
      <table>
        <thead>
          <tr>
            <td>姓名</td>
            <td>密码</td>
            <td>邮箱</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,index) in minData.list_data" :key="index">
            <td>{{item.name}}</td>
            <td>{{item.password}}</td>
            <td>{{item.email}}</td>
          </tr>
        </tbody>
      </table>
      <div class="addInfo">
        <!-- <addInfo></addInfo> -->
        <el-form :model="form" :rules="rules" ref="ruleFormRef" label-width="auto" style="max-width: 600px">
          <el-form-item label="姓名:" prop="name">
            <el-input v-model="form.name" />
          </el-form-item>
          <el-form-item label="密码:" prop="password">
            <el-input v-model="form.password" />
          </el-form-item>
          <el-form-item label="邮箱:" prop="email">
            <el-input v-model="form.email" />
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="onSubmit(ruleFormRef)">新增</el-button>
            <el-button @click="reset">清除</el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
  </el-main>
</template>
<style scoped>
.addInfo{
  width: 600px;
  height: 100%;
  background: #FFFFFF;
  box-shadow: 0px 0.02rem 0.1rem 0px rgba(150, 150, 150, 0.35);
  border-radius: 0.1rem;
  margin: 10px 0;
  padding: 20px;
}
table, th, td {
  border: 1px solid black;
  border-collapse: collapse; /* 移除表格内边框间的间隙 */
}
</style>

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElementPlus 是一套基于 Vue.js 的桌面端组件库,包含了丰富的常用功能组件,如表单、按钮、下拉选择框等,适用于快速构建高质量的前端页面。 ### ElementPlus 中的表单清空表单ElementPlus 中处理表单清空通常涉及到对表单项的控制以及清除表单状态的操作。下面简述如何实现这一功能: #### 渲染表单输入项 首先,在模板部分定义表单控件,比如文本输入框、复选框、下拉选择等,例如: ```html <el-form ref="formRef" label-width="80px"> <el-form-item label="用户名"> <el-input v-model="formData.username"></el-input> </el-form-item> <!-- 其他字段 --> </el-form> ``` #### 获取表单数据及验证状态 通过 `ref` 属性获取 `form` 实例,并可以利用其提供的 API 来访问表单数据和状态: ```javascript const { validate } = this.$refs.formRef; ``` #### 定义验证规则 在 `rules` 对象中设置验证规则,这将用于检查用户输入是否有效: ```javascript this.$refs.formRef.rules = { username: [{ required: true, message: '请输入用户名', trigger: 'blur' }] }; ``` #### 管理表单状态 可以创建一个管理表单状态的对象,例如: ```javascript data() { return { formData: {}, // 验证结果 formValid: false, // 其他状态变量 }; } ``` #### 清空表单 为了方便地清空表单,可以创建一个函数: ```javascript methods: { clearForm() { this.formData = {}; this.$refs.formRef.resetFields(); } }, ``` 当需要清空表单时,只需调用这个 `clearForm()` 函数即可: ```html <button @click="clearForm">清空表单</button> ``` #### 表单校验 使用 `validate` 方法可以检查所有字段是否满足验证规则: ```javascript if (validate()) { console.log('所有表单项都已正确填写'); } else { console.error('存在无效的数据'); } ``` ### 相关问题: 1. **如何在 ElementPlus 中自定义表单验证错误提示的样式?** 2. **ElementPlus 中的表单如何实现动态增加或减少输入项?** 3. **在 ElementPlus 中如何实现在提交前强制用户完成必填项的验证并提供即时反馈?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值