element-ui Form表单校验小结及踩坑

1、要验证输入只能为数字时

如果使用type=“number”样式这边去掉type=number时自带的属性

/* 去除webkit中input的type="number"时出现的上下图标 */
    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button {
        -webkit-appearance: none;
    }
    input[type="number"] {
        -moz-appearance: textfield;
    }

也可以用自带的rules校验,这边就统一提交的时候,校验

 2.整体校验时,可以写方法校验;

 3.根据条件判断表单里的 某一项动态变化是否必填;

示例如下:

效果如下

 踩坑之路:

本打算通过动态判断prop的值来进行动态校验,但是这样*虽然会根据前面的条件而动态显示隐藏,但是rules中的验证不生效

以上方法只是动态修改了props属性,而并未出发表单的重新渲染,验证器中的prop属性并未更新,还是初次渲染时的空值,知道原因就想到了解决办法。

解决方法:

方法一:
动态响应的改变required的值;在rules里面可以不用加 requied

data里面的rules

虽然这样可以动态控制必填跟非必填,但是必填是提示的  xxxx is required,这时候可以通过自定义validator来解决,默认提示,在data里面定义isEntrust

还有一个问题,就是有时候必填转换为非必填时,提示语还是存在,可以单独进去清除

综上可以解决

方法二:

直接改变当前对应项的 rules ;写对应需要的两套校验条件

方法三:

通过v-if和v-else写两个表单项,一个带prop属性,一个不带prop属性,通过强制销毁和创建表单实现表单的重新渲染需要加key(diff算法会复用组件,并没有重新渲染,需要加key)。

另外一种参考 https://blog.csdn.net/mineblogjw/article/details/85120384    https://www.jb51.net/article/159108.htm

补充简单好用的方法

直接通过提交的时候对单独的form里面的rules进行修改

4.取消部分表单字段校验结果;

5.resetFields与clearValidate方法

//根据需求二选一

this.$refs[refElement].resetFields(); //移除校验结果并重置字段值
  this.$refs[refElement].clearValidate(); //移除校验结果

6.同时校验多个表单

方法一:

//校验表单1
      var p1=new Promise(function(resolve, reject) {
            this.$refs[form1].validate((valid) => {
                if(valid){
                    resolve();
                }
            })
        });
        //校验表单2
        var p2=new Promise(function(resolve, reject) {
             this.$refs[form2].validate((valid) => {
              if(valid){
                resolve();
              }
            })
        }); 

        Promise.all([p2,p1]).then(function(){
            alert("验证通过了");
        });

方法2

    this.$refs[form1].validate((valid) => {
                if (valid) {
                  this.form1= true
                }
              });
         this.$refs[form2].validate((valid) => {
                if(valid){
                   this.form2= true
                }
            });
          if (this.form1&& this.form2) {
             alert("验证通过了")
           } 

7.校验的几个方法

对于表单中部分字段的校验看如下的代码,当校验不通过时phoneError返回值为校验的提示信息,当通过时phoneError的值为空,所以if语句中用(!phoneError)表示校验通过,完整代码及页面展示图如上。

sendMsg(phoneNum) {
    this.$refs.thirdForm.validateField(‘phone‘, (phoneError) => {
        if(!phoneError){
            //当校验通过时,这里面写逻辑代码
        }
    })
};

原文地址:https://www.cnblogs.com/qdlhj/p/12332407.html

时间: 2024-11-07 08:57:26

element-ui Form表单校验小结及踩坑的相关文章

简约的form表单校验插件

前言 网上有好多form表单校验插件,包括jquery的表单检验插件,这些中好多插件功能很齐全强大,提示方式很酷,很美观好看.本想拿来用,但是发现几个问题: 1.使用不方便.校验规则繁多,调用校验函数难记忆. 2.提示方式固定.一般插件给出固定的几种提示方式,但是实际中,不同系统都有自己的页面风格样式,有自己的提示方式,插件自带的一般用不上. 因此,我最终没有采用这些插件,以免用后出现难以修改或实现的情况. 如果一种校验插件能避免以上两个问题最好了,方便使用,提示方式自定义 ,所以自己做了一个简

应用二:Vue之ElementUI Form表单校验

  表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基础用法进行整理说明~ 如下代码是Form表单校验的demo示例: <template> <div id="demo"> <el-dialog title="表单校验示例" :close-on-click-modal="false" :visible.sync="dialogVisible" width=&q

vue+iview的form表单校验总结

这篇文章时关于如何使用iview的form表单校验.主要学习如何使用form校验(以校验文字长度为例),以及如何动态添加校验规则和异步校验. 1.为需要校验的表单添加form标签 <!--注意: ref/rules/model/prop等属性是必须的--> <Form res="foemRef" :rules="formRules" :model="formData" v-if="liveNode">

element-ui Form表单校验

使用element-ui自带的表单校验,注意几个点: 1.el-form通过rules属性,绑定校验规则 2.el-form-item的prop属性,设置为需要校验的字段名 3.提交后二次校验 saveEdit(formName) { this.$refs[formName].validate((valid) =>{ if (valid){ this.editVisible = false } else{ this.$alert('有必填项未输入,请检查') } }) } element-ui文

vue+element ui 重置表单

1 <el-dialog :title="addForm.title" :visible.sync="dialogFormVisible" width="900px" @close="closeDialog"> 2 <el-form :model="addForm" :rules="rules" ref="addForm" label-width=&

vue + element ui 阻止表单输入框回车刷新页面

问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止表单回车提交. 测试 下面的代码出现表单回车提交 <body> <div id="app"> <el-form ref="form" :model="form" label-width="80px"&

20151124 Jquery UI form 表单变成dialog

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

vue 表单校验(二)

vue 表单校验(二) vue element-ui表单校验 由于现在使用element-ui进行form表单校验,因而使用其自带的校验规则进行校验,发现有些并不是那么好校验,或者说是校验起来很繁琐,因而一直在研究中 表单校验分类 前后端校验 前端校验 后端校验 这种目前一般是结合起来使用,很少单纯前端校验,或者单纯后端校验的 前端检验 数据录入时校验 数据回显时校验 动态创建时校验 数据是否必填时校验 接下来所谈论的校验都是基于前端进行校验,若是后天校验,只是统一校验规则而已,这样前后便可以统

element-ui Form表单验证

element-ui Form表单验证规则全解 element的form表单非常好用,自带了验证规则,用起来很方便,官网给的案例对于一些普通场景完全没问题,不过一些复杂场景的验证还得自己多看文档摸索,自己经过数次爬坑 之后,总结了几种form表单的验证规则,为了便于阅读,验证规则是拆分的,完整的代码放在文末 1. 普通输入验证 <el-form-item label="活动名称" prop="name"> <!-- validate-event属性