首页 > 其他分享 >动态表单校验

动态表单校验

时间:2024-03-26 20:33:16浏览次数:14  
标签:resolve 校验 表单 valid Promise 动态 添加

单个的表单域上传递属性的验证规则

记录一次动态表单嵌套动态表单,前端必填校验的问题。

之前没怎么写过前端代码,看文档也不够仔细~~按常规方法写完页面之后,测试发现校验都加上去了,但是填写内容之后校验也一直在,并且添加的中文校验提示没生效,一直是英文的提示。

页面大致长下面这样~~可以添加多个问题,问题可以添加多个选项。

 已经不记得最开始写的是啥样的代码了,把最后结果放上来记录下吧~

有需要的朋友可以参考!

<div class="info-wrap">
    <div class="info-title">
      <span>问卷问题</span>
    </div>
    <div class="info-content">
      <el-form :model="questionForm" ref="questionForm" label-width="130px">
            <div v-for="(item, index) in questionForm.question" :key="index">
                  <el-form-item label="问题描述" :prop="'question.'+index+ '.surveyQuestion.question'" :rules="{required: true, message: '问题描述不能为空', trigger: 'blur'}">
                    <el-input v-model="item.surveyQuestion.question" placeholder="请输入问题描述" type="textarea" maxlength="100" show-word-limit autosiz></el-input>
                  </el-form-item>
                      <el-form-item prop="optionList" v-if="item.surveyQuestion.questionType==0 ||item.surveyQuestion.questionType==1">
                        <el-button type="primary" @click="addOption(index)">添加选项</el-button>
                      </el-form-item>
                  <template v-if="item.surveyQuestion.questionType==0 || item.surveyQuestion.questionType==1">
                    <div v-for="(nestedItem, nestedIndex) in item.optionList" :key="nestedIndex">
                      <el-form-item :label='"选项"+(nestedIndex+1)' :prop="'questionVOS.'+index+ '.optionList.' + nestedIndex+'.optionContent'"
                        :rules="{required: true, message: '选项描述不能为空', trigger: 'blur'}">
                        <div style="display: flex; align-items: center;">
                          <el-input type="textarea" maxlength="100" show-word-limit autosize v-model="nestedItem.optionContent" placeholder="请输入问题选项" style="width: 60%">
                          </el-input>
                          <el-button @click="removeOption(index,nestedIndex)" size="mini" icon="el-icon-delete" type="danger" circle style="float: right; margin: 10px" />
                        </div>
                      </el-form-item>
                    </div>
                  </template>
            </div>
       </el-form>
   </div>
</div>

参考vue官方文档,主要需要关注的点已经标记出来。

提交校验

由于我在一个页面用了两个form表单,this.$refs[formName].validate((valid) => {})方法,不能添加两个表单名,提交校验的时候直接用,前端小白也稍折腾了下~~

在此记录下!

解决办法如下:

    submitForm() {
      const baseFormCheck = new Promise((resolve, reject) => {
        this.$refs["baseForm"].validate(valid => {
          if (valid) {
            resolve();
          }
        });
      });
      const questionFormCheck = new Promise((resolve, reject) => {
        this.$refs["questionForm"].validate(valid => {
          if (valid) {
            resolve();
          }
        });
      });
      Promise.all([baseFormCheck, questionFormCheck]).then(() => {
        console.log("开始提交")
      }).catch(err => {
        console.log("校验报错")
      })
    },

标签:resolve,校验,表单,valid,Promise,动态,添加
From: https://blog.csdn.net/weixin_45455217/article/details/136939320

相关文章

  • js 非常好用且优雅的步骤校验、提交校验、自定义校验写法
    很多form表单和其它场景,在提交前或进入下一步前需要校验逻辑,这里总结了一个通用方法: constform={name:'',age:20,time:['2100-01-01','2100-01-01']}constvalidForm=()=>{//校验状态总结let......
  • 代理模式(静态代理和动态代理)
    1.静态代理    静态代理中代理类与被代理类都需要实现同一个接口,这就说明我们的一个静态代理类只能代理一个类,并且还要事先知道我们要代理哪个类才能写代理类,如果我们有其他类还想使用代理那就必须再写一个代理类。【1】测试案例:法外狂徒张三叫律师打官司packageco......
  • jinja2 通过Template. make_module 进行动态macro 创建以及macro 方法调用
    实际属于一个小技巧,可以实现比较灵活的jinja2扩展,是从dbt对于macro的处理部分学习到的参考代码app.pyfromjinja2importEnvironment env=Environment() #定义macro的内容macro_template="""{%macromydemo(name,age)-%}{{name......
  • .NET Emit 入门教程:第五部分:动态生成方法(MethodBuilder 与 DynamicMethod)
    前言:当我们涉及到在运行时生成和定义方法时,便需要使用到C#中的两个关键类之一:MethodBuilder 或 DynamicMethod。这两者都属于反射(Reflection.Emit)的一部分,允许我们以动态的方式创建方法。两者各有侧重,使用方式大体相同,本篇文章我们先介绍MethodBuilder,再介绍DynamicMethod,......
  • Android证书校验出现java.io.IOException: Invalid keystore format错误的解决方案
    使用下面命令keytool-list-v-keystore签名.keystore出现错误java.io.IOException:Invalidkeystoreformat一般出现这种错误的情况有2种可能1.密码错误2.JDK版本问题1.如果是JDK8生成的keystore,然后用JDK11(+)执行是没问题的,当前情况不需要解决,因为是成功......
  • 界面控件DevExpress WinForms/WPF v23.2 - 电子表格支持表单控件
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!表单控件表示交互元素(按钮、复选框和下拉列表),并在......
  • C++动态内存管理
    目录C/C++内存分配C++内存管理C++内存管理介绍C++内存管理使用C++内存管理基本语法operatornew和operatordelete函数定位new表达式(placement-new)基本语法使用场景malloc/free和new/delete相同点不同点C/C++内存分配在C语言动态内存管理章节已经了解到内......
  • SpringBoot如何优雅的进行参数校验
    写在前面上一篇文章中我们学会了如何优雅的接收前端参数,传送门SpringBoot如何优雅的接收前端参数接收到参数后,接下来要做的就是校验参数的合法性。这一步的重要性就不用多说了。即使前端已经对数据进行了校验,我们后端还是要再对接收到的数据进行一遍彻底的校验。这样可以避免......
  • 动态规划——线性dp
    数字三角形//从上到下#include<iostream>#include<algorithm>usingnamespacestd;constintN=510,INF=1e9;intn;inta[N][N];intf[N][N];intmain(){scanf("%d",&n);for(inti=1;i<=n;i++)for(int......
  • 开源表单工作流引擎好用吗?
    如果想提升办公协作效率,可以用什么样的平台软件实现?在竞争越来越激烈的社会中,想要实现高效率的办公,可以一起了解低代码技术平台以及开源表单工作流引擎。它们的易操作、灵活、简便等优势特点已成为了中小企业喜爱的优势特点。进入流程化办公新时代,不妨一起了解开源表单工作流引擎......