使用element ui表单验证的流程

这篇具有很好参考价值的文章主要介绍了使用element ui表单验证的流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

源码在下面

  1. 表单验证的关键

1.1 给表单添加ref属性
1.2 给el-form-item添加prop属性
1.3 定义表单的验证规则(也可以不需要定义)
1.4 表单提交时,通过this.$refs.表单的ref.validate()

1.1
element表单提交,# vue,ui,vue.js,elementui
1.2
element表单提交,# vue,ui,vue.js,elementui
1.3
element表单提交,# vue,ui,vue.js,elementui
1.4
element表单提交,# vue,ui,vue.js,elementui源码:文章来源地址https://www.toymoban.com/news/detail-626474.html

<template>
    <el-main>
        <el-form
            :model="listParm"
            ref="form"
            label-width="80px"
            :inline="true"
            size="small"
        >
            <el-form-item>
                <el-input
                placeholder="请输入姓名"
                v-model="listParm.nickName"
                ></el-input>
            </el-form-item>
            <el-form-item>
                <el-input placeholder="请输入电话" v-model="listParm.phone"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button icon="el-icon-search" @click="searchBtn">搜索</el-button>
                <el-button icon="el-icon-close" style="color: #ff7670" @click="resetBtn"
                >重置</el-button
                >
                <el-button type="primary" icon="el-icon-plus" @click="addBtn"
                >新增</el-button
                >
            </el-form-item>
        </el-form>

        <el-table :data="tableData" border stripe size="small">
            <el-table-column prop="date" label="姓名" align="center"></el-table-column>
            <el-table-column prop="name" label="电话" align="center"></el-table-column>
            <el-table-column prop="address" label="邮箱" align="center"></el-table-column>
            <el-table-column label="操作" width="180" align="center">
                <template slot-scope="scope">
                    <el-button
                        type="primary"
                        size="small"
                        icon="el-icon-edit"
                        @click="editBtn(scope.row)"
                    >编辑</el-button
                    >
                    <el-button
                        type="danger"
                        size="small"
                        icon="el-icon-delete"
                        @click="deleteBtn(scope.row)"
                        >删除</el-button
                    >
                </template>
            </el-table-column>
        </el-table>

        <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page.sync="paging.pageSize"
            :page-sizes="[10]"
            :page-size="paging.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="paging.total"
            background
            style="margin-top: 15px"
        >
        </el-pagination>

        <sys-dialog-vue
            :title="dialog.title"
            :visible="dialog.visible"
            :width="dialog.width"
            :height="dialog.height"
            @onClose="onClose"
            @onConfirm="onConfirm"
        >
            <div slot="content">
                <el-form 
                    :model="addModel" 
                    ref="addRef" 
                    :rules="rules" 
                    label-width="80px" 
                    size="small"
                    style="margin-right: 40px"
                >
                    <el-row>
                        <el-col :span="12" :offset="0">
                            <el-form-item prop="nickName" label="姓名:">
                                <el-input v-model="addModel.nickName" placeholder="请输入姓名"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12" :offset="0">
                            <el-form-item prop="phone" label="电话:">
                                <el-input v-model="addModel.phone" placeholder="请输入电话"></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>

                    <el-row>
                        <el-col :span="12" :offset="0">
                            <el-form-item prop="email" label="邮箱:">
                                <el-input v-model="addModel.email" placeholder="请输入邮箱"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12" :offset="0">
                            <el-form-item prop="sex" label="性别:">
                                <el-radio v-model="addModel.sex" label="0"></el-radio>
                                <el-radio v-model="addModel.sex" label="1"></el-radio>
                            </el-form-item>
                        </el-col>
                    </el-row>

                    <el-row>
                        <el-col :span="12" :offset="0">
                            <el-form-item prop="username" label="账户:">
                                <el-input v-model="addModel.username" placeholder="请输入账户"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12" prop="password" :offset="0">
                            <el-form-item prop="username" label="密码:">
                                <el-input v-model="addModel.password" placeholder="请输入密码"></el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>

                </el-form>
            </div>
        </sys-dialog-vue>
    </el-main>
</template>

<script>
import SysDialogVue from '@/components/dialog/SysDialog.vue';
export default {
    // 注册组件
    components: {
        SysDialogVue,
    },
    data() {
      return {
        // 查询数据
        listParm: {
            nickName: '',
            phone: '',
        },
        // 弹框
        dialog: {
            title: '',
            visible: false,
            width: "40%",
        },
        // 分页
        paging: {
            pageSize: 10,
            total: 0,
        },
        // 表单绑定数据
        addModel: {
            nickName: '',
            phone: '',
            email: '',
            sex: '',
            username: '',
            password: '',
        },
        // 表单验证规则
        rules: {
            nickName: [
                {
                    required: true, 
                    message: '请输入姓名', 
                    trigger: 'blur' 
                },
                {
                    validator:function(rule,value,callback){
                        function getStrLength(str) {
                            // 当数据库编码为一个汉字占3个字节时,把字符中的每个汉字都替换成'xxx'再得出长度
                            return str.replace(/[^x00-xff]/g, 'test').length;
                        }
                        if (!value) {
                            callback();
                        } else if (getStrLength(value) <= 30) {
                            callback();
                        } else {
                            return callback(new Error('不能超过30个字符'))
                        }
                    },
                } 
            ],
            phone: [{
                required: true, 
                message: '请输入手机号', 
                trigger: 'blur' 
            }],
            email: [
                {
                    required: true, 
                    message: '请输入邮箱', 
                    trigger: 'blur' 
                },
                {
                    type: 'email', 
                    message: '请输入正确的邮箱地址', 
                    trigger: ['blur', 'change']
                }
            ],
            sex: [{
                required: true,  
                message: '请选择性别', 
                trigger: 'blur' 
            }],
            username: [{
                required: true,  
                message: '请输入账户', 
                trigger: 'blur' 
            }],
            password: [{
                required: true,  
                message: '请输入密码', 
                trigger: 'blur' 
            }]
        },
        // 表格
        tableData: [{
            date: '2016-05-02',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1518 弄'
        }, 
        {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
        }, 
        {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
        }, 
        {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
        }, 
        {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
        }, 
        {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
        }, 
        {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
        }, 
        {
            date: '2016-05-04',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1517 弄'
        }, 
        {
            date: '2016-05-01',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1519 弄'
        }, 
        {
            date: '2016-05-03',
            name: '王小虎',
            address: '上海市普陀区金沙江路 1516 弄'
        }],
      };
    },

    methods: {
        searchBtn() {
            console.log(123);
        },
        resetBtn() {

        },
        addBtn() {
            this.dialog.visible = true;
            this.dialog.title = '新增用户'
        },
        editBtn(row) {
            console.log(row);
        },
        deleteBtn(row) {
            console.log(row);
        },
        // 分页
        handleSizeChange(val) {
            console.log(`每页 ${val}`);
        },
        handleCurrentChange(val) {
         console.log(`当前页: ${val}`);
        },
        // 弹框
        onConfirm() {
            // 表单的验证
            this.$refs.addRef.validate((validate) => {
                if (validate) {
                    this.dialog.visible = false;
                } else {
                    this.$message.error("请完善相关信息");
                    return false;
                }
            })
        },
        onClose() {
            this.dialog.visible = false;
        }
    }
}   
</script>

<style lang="sass" scoped>

</style>

到了这里,关于使用element ui表单验证的流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 表单验证 ---- 在Vue2中使用ElementUI进行表单验证

    目录 前言 给表单绑定对应属性 在data中定义数据对象和表单的定义规则 与数据对象双向绑定 对整个表单进行验证 在做项目时,对于表单进行验证是我们必不可少的 例如 搭建一个基本的登录界面 表单嵌套一般都是   el-form el-form-item el-input  进行验证前,我们需要先 对el-

    2024年01月20日
    浏览(42)
  • 【实操】vue+element UI tab页多表单合并校验提交

    一个页面中tab栏切换多个form表单组件,只有一个保存按钮。需要把各组件下的表达数据合并校验提交。 父组件通过两次调用$refs获取子组件的dom元素以及组件内部form的dom元素。 通过循环表单项获取validate值获取校验结果,通过Promise.all合并表单。 子组件内部getData方法返回表

    2024年02月11日
    浏览(44)
  • vue:element-ui表单动态验证规则

    实现当是否发送消息选择是时,业务类型字段必填。 当你在一个表单中使用 el-form 和 el-form-item 来创建表单项时, el-form-item 的 :rules 属性可以用来设置该表单项的验证规则。我们希望根据用户在 \\\"是否发送消息\\\" 这个表单项中的选择动态设置 \\\"业务类型\\\" 这个表单项的验证规则

    2024年01月23日
    浏览(48)
  • Vue element-ui form 表单 前端提交和后端的接收

    一、前端 1、新建弹窗dialog 2、在数据(data)里面绑定(return)数据 3、在method里新建方法 二、后端 1、在配置好mybatis-plus的前提下 2、在控制类中添加方法 3、@RequestBody注解的使用 @requestBody注解的使用 - 西风恶 - 博客园 (cnblogs.com)

    2024年02月15日
    浏览(57)
  • vue3在table里使用elementUI的form表单验证

            常规情况下。rules和formItem是一对一的。例如下面的情况,判断表单内的测试1和测试2是否为空。         但是,如果在table中就按照常规的写法如下会发现不管如何输入或删除都将触发valid=false校验。如果在validator_isEmpty中打印value值会发现,value一直未undefined。

    2024年02月04日
    浏览(53)
  • Vue表单提交正则表达式验证使用案例

    一、验证表单用法 1、表单布局及变量定义 2、定义表单中用到的实例、变量、交互dto等 3、验证规则表达式 说明: 1、sendRules 是表单使用的验证规则对象 2、属性 xxxNo 是具体校验那个属性字段 3、属性 required 非空校验 4、属性 message 提示字样 5、属性 trigger 触发事件 6、

    2024年02月16日
    浏览(40)
  • vue中elementUI表单循环验证

    进行验证的步骤

    2024年02月15日
    浏览(37)
  • 【element-UI】el-upload本地上传图片,点击表单提交和一起上传,使用formdata对象上传

    需求效果如下图: 因为后端要求图片需要和其他参数一起提交,使用formdata对象携带参数,通过设置el-upload中action参数值为#,以及auto-upload(是否在选取文件后立即进行上传)为false 接口api

    2024年02月12日
    浏览(58)
  • element ui重置表单和清除表单验证

    resetFields()与clearValidate()的区别 相同点:二者都能移除表单校验 不同点:resetFields()会对整个表单进行重置,将所有的字段重置为初始值 clearValidate() 只会移除表单校验,而且可以只对部分字段进行移除校验 this.$refs[formName].resetFields(); 意思是重置表单到初始值 this.$refs[formName

    2024年02月08日
    浏览(38)
  • 使用Element ui的from表单验证时,绑定的值无法在验证函数中获取值,恒为undefined的问题分析。

    在最近使用element ui的form表单功能进行开发时,通过prop绑定时,无法正确的获取value值,一直输出为undefined,通过调查发现, 在form表单进行发开时,我们会对form绑定上model这个属性, 目前el-form的model主要用表单验证的,也就是配合el-form的rules和el-form-item的prop来使用的。 当你

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包