ElementUI的form表单验证事件

element-UI框架使用validate.js的form校验规则(+自定义验证代码)- 应用篇 element-UI除了官方给出的校验规则,还可以自定义(举例如下) (官方说明)引入:Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。校验规则参见 async-validator 具体使用: 以上就是关于“ element-UI表单组件:校验规则(自定义验证代码)- 应用篇 ” 的... 阅读详情

用过了elementUi的表单验证、表单提交之后,个人觉得不是太建议使用。第一:和我们自己写js的繁琐程度差不多,第二,还要读文档增加了学习时间和成本。
废话不多说,直接上代码

html:注意1:代码中的:model顾名思义是我们双向绑定的数据,而ref=”user1”,我们可以把form表单看成是一个类,那么这个类的对象名字就是我们用ref指定的名字,这个名字会在js中调用elementUI的原生态方法中用到,而relus则是我们自定义校验的规则,定义在js的data里。
注意2:若要使用校验则必须在每个中设置prop属性,该属性的名字必须的和relus中定义的校验规则中对应的属性名字一样

 <el-row>
            <!--注册弹框-->
            <el-dialog
                class="dialogRegist"
                title="加入武林"
                :visible.sync="dialogVisible"
                width="50%"
                center="true"
        >
            <span>
                <el-form :model="user1" ref="user1" label-width="80px" :rules="rules">
                    <el-form-item label="姓名" prop="name">
                        <el-input v-model="user1.name" style="width:480px" placeholder="少侠,行走江湖,取个艺名吧"></el-input>
                    </el-form-item>
                    <el-form-item label="性别">
                        <el-radio-group v-model="radio">
                            <el-radio :label="1">男</el-radio>
                            <el-radio :label="2">女</el-radio>
                            <el-radio :label="3">妖</el-radio>
                         </el-radio-group>
                    </el-form-item>
                    <el-form-item  label="地址">
                      <el-cascader
                                expand-trigger="hover"
                                :props="defaultProps"
                                :options="addressList"
                                v-model="user1.address"
                                width="480px"

                        >
                        </el-cascader>
                    </el-form-item>
                    <el-form-item label="电话" prop="phone">
                        <el-input  v-model="user1.phone" style="width:480px"  placeholder="请输入电话"></el-input>
                       <!-- @blur="isPhone"-->
                    </el-form-item>
                    <el-form-item label="密码" prop="password">
                        <el-input  v-model="user1.password" style="width:480px"  placeholder="请设置密码"></el-input>
                       <!-- @blur="isPhone"-->
                    </el-form-item>
                    <el-form-item label="确认密码" prop="rePassword">
                        <el-input  v-model="user1.rePassword" style="width:480px"  placeholder="请再次输入密码"></el-input>
                       <!-- @blur="isPhone"-->
                    </el-form-item>

                    <!--<el-form-item label="邮箱">
                         <el-input style="width:480px" placeholder="请输入邮箱"></el-input>
                    </el-form-item>-->
                    <el-form-item label="头像">
                        <el-upload
                                class="upload-demo"
                                ref="upload"
                                :action="api.uploadImg"
                                :auto-upload="false"
                                list-type="picture"
                                :file-list="fileList"
                                :on-error="uploadError"
                                :on-success="uploadSuccess"
                                :limit="1"
                            >
                          <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
                          <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
                          <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
                        </el-upload>
                    </el-form-item>
                    <el-form-item>
                        <el-checkbox v-model="checked"></el-checkbox>同意<el-button @click="dialogVisible2=true" type="text">武林协议</el-button>方可加入武林
                    </el-form-item>
                </el-form>
            </span>

            <span slot="footer" class="dialog-footer">
            <el-button @click="resetForm('user1')">重 置</el-button>
            <el-button @click="submitForm('user1')" type="primary" >确 定</el-button>
            <!--<el-button @click="test" type="primary" >确 定</el-button>-->
             </span>
        </el-dialog>

            <!--协议弹框-->
             <el-dialog
                title="武林协议"
                :visible.sync="dialogVisible2"
                width="50%"
                center="true"
                >
            <span>
                <el-form ref="form" label-width="80px" >
                    <el-form-item >
                        <el-input
                                type="textarea"
                                :rows="8"
                                v-model="declaration"
                               >
                        </el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-checkbox v-model="checked"></el-checkbox>同意<el-button type="text">武林协议</el-button>方可加入武林
                    </el-form-item>
                </el-form>
            </span>

            <span slot="footer" class="dialog-footer">
            <el-button @click="dialogVisible2=false" type="danger" >关闭</el-button>
             </span>
        </el-dialog>


            </el-row>

js代码,在js文件的data里定义。
注意1:若是值验证数据是否为空,那么{required: true, message: ‘请输入名讳’, trigger: ‘blur’},就可以,这是elementUI帮我们定义好的。如果有其他的需求,比如手机号,两次密码是否一样等,请看js代码,代码中都有。
注意2:写的时候注意rules中每个属性的格式rules:{属性名称1:[{验证规则1},{验证规则2},,,],属性名称2:[],,,}
注意3:抛出验证提示信息,只要在回调函数里定义一个Error的类即可,如callback(new Error(‘手机号码格式不正确!’))
注意4:例如如下代码中验证两次密码是否正确的时候,当两次不一样的时候是一个if,之后还要再有一个else,else里面就只有一个callback();
即可(我就是被坑在这里了,没有写else,然后校验不同过可以走到函数里,但是校验通过了却怎么也进不到函数中去。),因为,你验证不正确有提示,那你验证正确了,肯定也有返回值啊,这个返回值就是我们在进行表单提交的时候,的一个boolean类型的返回值,如果rules所有的属性都验证通过那么它会返回一个true的属性,此时才允许提交,否则不允许表单提交。当有至少1条数据验证不同过的时候,它会返回一个boolean字段,和校验为通过的字段。

 rules: {
            name: [
                {required: true, message: '请输入名讳', trigger: 'blur'},
                {min: 1, max: 15, message: '长度在 1 到 15 个字符', trigger: 'blur'},
                  {
                    validator: function (rule, value, callback) {

                        $.ajax({
                            type:"post",
                            url:app.api.findUserByName,
                            dateType:"json",
                            contentType:'application/json',
                            data:JSON.stringify(app.user1),
                            success:function(result){
                               if(!result.success){
                                   callback(new Error(result.data))
                               } else {
                                   callback();  // 一定要有,这是表单校验成功后的回调,会返回一个boolean值,即true
                               }
                            }
                        });


                    }, trigger: 'blur'
                }
            ],
            phone: [
                {required: true, message: '请输入手机号码', trigger: 'blur'},
                {
                    validator: function (rule, value, callback) {
                        var MobileRegex = /^[1][3,4,5,7,8][0-9]{9}$/;
                        if (!MobileRegex.test(value)) {
                            callback(new Error('手机号码格式不正确!'))  // 这里错误的信息只要调用callback回调函数,然后在函数里newerror填写错误信息即可
                        } else {
                            callback();  // 一定要有,这是表单校验成功后的回调,会返回一个boolean值,即true
                        }
                    }, trigger: 'blur'
                }
            ],
            address:[
                {required: true, message: '请选择地址', trigger: 'blur'},
            ],
            password:[
                {
                    validator:function (rule,value,callback) {
                        if(value === ''){
                                callback(new Error("请输入密码"));
                        }else{
                            callback();
                        }
                    }
                }
            ],
            rePassword:[
                {
                    validator:function (rule,value,callback) {
                        if(value === ''){
                            callback(new Error("请输入密码"));
                        }else{
                            if(value !== app.user1.password){
                                callback(new Error('两次密码输入不一致'));
                            }else{
                                callback();
                            }
                        }
                    }
                }
            ],
        },

js函数:注意1:上面提到的ref这里的refs后面跟的就是我们form表单的ref后面的名字,有了这个名字才能调用原生态的方法,它还有另一种写法,refs后面跟的就是我们form表单的ref后面的名字,有了这个名字才能调用原生态的方法,它还有另一种写法,refs.user1.方法名,其实也不难理解,就是对象点方法名。
注意2:在重置表单的时候,就只能重置rules中校验的属性,没有校验的不能清空(我们可以自己清空)
注意3:上面说的回调函数,与这里的 this.$refs[formName].validate。的validate向对应,回调函数返回的数据,就是validate函数的参数

     // 注册重置表单
        resetForm:function () {
            this.$refs['user1'].resetFields(); // 将表单中绑定的变量也清空了
        },
        // 提交表单
        submitForm:function (formName) {

            alert("提交...");
            this.$refs[formName].validate(function (valid,object) { // 是否校验成功,和未成功的字段
                console.log(valid);
                /*debugger*/
                if(valid){
                    //  表单中所有有验证的且已经通过的,就可以提交了
                    if(app.checked){
                        $.ajax({
                            type:"post",
                            url:app.api.addUserUrl,
                            dateType:"json",
                            contentType:'application/json',
                            /*contentType : 'application/x-www-form-urlencoded',*/
                            data:JSON.stringify(app.user1),
                            success:function(result){
                                alert("成功");
                            }
                        });
                    }else{
                        alert("请同意协议");
                    }
                }
               else {
                    alert("提交失败");
                    console.log('error submit!!');
                    //return false; // 有任何一项没有通过验证表单就不能提交
                }
            });
        },

controller

 @RequestMapping("/ptUser/addPtUser.do")
    public void addUser(@RequestBody  PtUser user){
        ptUserService.insert(user);  
    }

运行截图
这里写图片描述

ps:这几天发烧感冒又是肠胃炎的,身体才是第一位,大家工作的平时还是要好好锻炼身体的

Vue前端框架实现ElementUI的Form表单验证方式 首先,需要对form表单完成如下定义: 然后,对表单的项指定一个prop属性名,并将其绑定到model中: 2.2 用户名检验(一般检验) 通过制定rules规则检验输入数据的合法性: 效果如下:同样,先制定rules规则检验: 然后实现入侵检验方法checkPhone: 2.4 form表单数据非法检验 2.5 完整表单代码 如果本文对您有帮助的话,麻烦充电支持一下小编,谢谢♥~ 阅读详情

相关推荐

【ElementUI 表单校验】一个 el-form-item 下多个表单校验(循环校验)

前端开发项目的过程中,批量表单循环校验是很常见的,如上图,动态添加奖励计算规则,把所有的表单放到了一个 el-form-item 下。也可以理解为 el-form-item 做了嵌套,外层当然也可以省略,样式做微调,下面通过代码来详细的看一下。不足之处,多多交流。

前端知识分享喵 4828

Element UI Form表单表单验证触发方式 trigger: ‘change‘ 和trigger: ‘blur‘区别

备注:没有进行任何输入时,不会触发change,但一定会触发blur事件。二、 trigger: ‘blur’:失去焦点时触发,如上图。一、 trigger: ‘change’:数据改变时触发。

weixin_65921319的博客 6682

Springboot项目中使用邮箱验证码注册登录的代码实现

本文介绍了在Spring Boot应用中实现邮箱验证码注册和登录功能的完整方案。文章首先概述了三种用户认证方式(邮箱验证码注册/登录和传统密码登录),然后详细说明了实现所需的技术栈(Spring Boot、Spring Security、JWT等)。重点阐述了邮件服务配置、验证码生成与存储的核心实现,包括QQ邮箱授权码获取、Thymeleaf邮件模板处理以及验证码缓存管理。最后展示了发送验证码和用户注册的API实现,为开发者提供了完整的参考方案。该方案兼顾安全性和用户体验,适合现代Web应用的用户认证需求。

BXCQ_xuan的技术专栏 | 实战干货·实践教程·学习笔记 1338

element-ui表单验证的trigger的值,触发其他的验证

看element-ui给的例子trigger可以取’change’,'blur’等值,但是并不是所有的验证项都可以被这样触发,如何主动控制触发验证呢? 可以使用validateField。看element-ui自定义验证里面就有一个例子,在“密码”不为空的时候去验证“确认密码”字段: var vaildatePass = (rule,value,callback) =>{ if (valu...

weixin_42508745的博客 2万+

从零开始:使用英伟达nx开发板部署目标检测算法的全过程

英伟达nx开发板烧录、依赖安装、开发板联网

weixin_51192760的博客 3760

Grok-1.5+Ollama企业级本地化部署与合规实践指南

本文详细介绍了Grok-1.5+Ollama企业级本地化部署与合规实践指南,重点分析了本地化部署的成本优势和数据主权保障。通过RTX 4090显卡的硬件选型、Ubuntu 22.04系统优化及部署流程中的关键陷阱规避,为企业提供了高效、安全的AI模型部署方案。特别适合金融、医疗等敏感行业。

weixin_29094539的博客 180

ElementUI表单校验trigger设为change无效问题

如果封装的自定义表单组件,内部存在el-form,所有的表单元素都在form内部,然后当整个form的数据变化时,this.$emit('input', value),这种情况不会触发表单的校验的,因为当前组件作为一个整体,被嵌入在el-form-item中,它并不知道你的数据变化了。以el-input为例,在源码中可以看到,在watch中监听value变化,并通知上层数据变了。

qq_17189095的博客 2476

使用Kolla部署多节点Rocky版本OpenStack

openstack命令行客户端使用,post-deploy会在 /etc/kolla/目录下生成文件admin-openrc.sh。每次使用openstack命令时执行source /etc/kolla/admin-openrc.sh(manager节点执行)source /etc/kolla/admin-openrc.sh (将文件内容复制到/etc/profile中,即可一直生效)3.2.2 开始安装kolla-ansible,要带上--ignore-installed PyYAML,否则可能会报错。

gyc1206的博客 1926

仿 ELEMENTUI 实现一个简单的 Form 表单

  原文:仿 ElmentUI 实现一个 Form 表单 一、目标   ElementUI 中 Form 组件主要有以下 功能 / 模块: Form FormItem Input 表单验证   在这套组件中,有 3 层嵌套,这里面使用的是slot 插槽,我们在接下来的代码中也需要运用到它。 二、组件设计 e-form 全局校验,并提供插...

334

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3666

使用Docker搭建MaxKB智能体平台

【代码】使用Docker搭建MaxKB智能体平台。

janthinasnail的博客 708

ElementUI组件的介绍

1.

weixin_55633731的博客 1403

YOLOv11 改进入门篇 | 轻量级涨点技巧:GhostConv 替代普通卷积的实战指南

摘要: 本文介绍如何通过GhostConv改进YOLOv11,实现轻量化涨点。YOLOv11深度增加导致参数量、延迟和内存占用上升,GhostConv通过“本征特征+线性变换”策略,在精度几乎无损的情况下降低30%-50%计算量。文章详细解析GhostConv原理,对比普通卷积的参数量和FLOPs优势,并提供完整的代码级改造流程,包括模块实现、注册及网络配置。实验表明,该方法有效提升边缘端推理效率,适用于移动端等资源受限场景。

shrgegrb的博客 1652

el-form中不使用model,只使用验证

el-form和el-input的一些解决方案

qq_40278396的博客 531

第六部分:VTK进阶(第182章 体素化与隐式建模)

本文系统介绍了基于点云构建有符号距离场(SDF)的核心原理与VTK实现方法。主要内容包括:1)SDF的基本概念与算法原理,通过体素网格隐式表达几何表面;2)关键参数配置指南,如体素分辨率、边界范围和影响半径的选择;3)点云法向估计、SDF计算与等值面提取的完整工作流程;4)常见问题解决方案与性能优化建议。文中提供了详细的C++代码示例,展示从随机点云生成SDF并重建曲面的完整过程,特别强调了法向估计、参数调优和后处理等关键环节。该方法适用于点云表面重建、几何处理等应用场景。

仰望星空的博客 527

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

el-form动态检验无法生效问题(已解决)

要对el-form里面的字段动态生成校验规则,测试了一系列的骚操作也无法生效,要么是require视图生效了,校验规则还是不生效;

A_9888的博客 1906

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Vue项目中使用ElementUI

Vue项目中使用ElementUI ElementUI 安装 npm i element-ui -S 引入 Element main.js 内容添加 import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); 以上代码便完成了 Element 的引入。样式文件需要单独引入。 至此,一个基于 Vue 和 Element 的开发环境已经搭建完毕,现在就可以编写代

quest101的博客 253

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

el-table 添加表单验证

element ui el-table 添加表单验证 table 中添加 el-form-item 配置index prop <el-table-column align="center" label="手机号" min-width="180" prop="birthday"> <template slot-scope="scope"> <el-form-item label-width="0" :prop="'studen

weixin_50061268的博客 481

elementui table某一列是否显示_Element UI中form表单对el-tree的自动验证

Element UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架。在前端form表单的开发中会利用Element UI中的el-tree组件作为作为form表单中树状结构的复选框使用,但有时出于实际数据验证的需要,要对el-tree组件的树状结果是否选择进行验证。如果完全通过自己写逻辑代码无疑会比较复杂,如果想通过form表单自带的验证方法,官网又没有提供详细方法。为此本文...

weixin_39796652的博客 994

Vue+ElementUI 搭建后台管理系统(实战系列四)

前言 使用ElementUI已经有一段时间了,在一边上手开发后台管理系统的同事,也记录了一些笔记,一直都没有时间将这些零零散散的笔记总结起来,整理成一个比较系统详细一点的教程,可以留着以后来看。 Vue+ElementUI 搭建后台管理系统(实战系列四)- form表单的处理 在项目中,经常会用到form表单的功能,不管是添加还是修改信息,都会涉及到,Radio 单选框,Checkbox 多选...

祈澈菇凉 1093

el-form组件中的常用属性

设置表单为行内表单样式,使表单内的表单项能够紧凑排列在一行或者按照行内布局的方式排列,优化页面布局,节省空间,适合在页面中需要紧凑展示表单与其他元素的场景,比如在一个表格的某一行中嵌入简单的表单进行操作等情况。这里的:是v-bind的缩写,用于动态地绑定一个或多个属性到表达式的值,它的主要作用是将数据属性的值绑定到 DOM 元素的属性上,使 DOM 元素的属性能够根据数据的变化而动态更新。),使表单的布局更加整齐、美观,各输入项在视觉上排列有序,便于用户查看和填写信息。:监听表单的提交事件(原生的。

学无止境 816

Vue-Final-Form 使用教程

Vue-Final-Form 使用教程 1. 项目介绍 Vue-Final-Form 是一个专为 Vue.js 设计的高性能订阅式表单状态管理工具。它允许开发者轻松地处理表单的验证、提交和实时更新等复杂功能,提供了一套高效且易用的 API 来简化你的开发流程。Vue-Final-Form 基于 Final-Form 库构建,充分利用了 Vue.js 的特性,如 scoped slots 和事件绑定...

gitblog_01139的博客 812

elementUI的input使用扫描枪,回显值后重新刷新页面

使用场景: 1.使用elementUi的el-form,表单里面只有一个input的标签; 2.扫描枪扫描后,会自动把码号回显到当前focus的input中; 出现问题: 当前页面会刷新一次,清空所有数据 分析问题: 扫描枪的回调input的enter事件,form的表单当只有一个input标签的时候会有一个默认提交的事件,导致页面刷新 解决方法: 1.el-form添加@submit.native.prevent阻止提交事件。 2.增加多一个input; ...

qq_36341137的博客 2013

转换,模糊查询属性,校验html写法

表单规则 :rules=rules el-form-item中的prop绑定的属性写规则rules。element ui 模糊查询 filterable。blur 失去焦点事件 forcus 获取焦点事件。

m0_62782752的博客 342

elementUI form表单验证规则使用详解

elementUi提供了form表单自带有表单验证规则,这里简单介绍下 比较简单的表单验证可以直接使用form自带的,ele定义的验证规则为rules数组,在使用elementU表单验证时可以向其传入约定的验证规则数组,并将 Form-Item 的prop属性设置为需校验的字段名即可 <el-form :model="ruleForm" :rules="rules" ref="rule...

lwx931449660的博客 4288

elementui一个form-item里面有多个输入框表单验证

elementui一个form-item里面有多个输入框表单验证 如图 这里是动态表单,增加删除,以下是主要代码: <el-form-item label="排查内容及频率" prop="values"> <div v-for="(item,index) in form.djList" :key="index"> <el-form...

web8_zhy的博客 1万+
上一篇: axious与原生态ajax返回数据的格式
下一篇: application/x-www-form-urlencoded请求出现400错误
java_xxxx
博客等级 码龄9年 127粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值