首页 > 其他分享 >form表单验证

form表单验证

时间:2023-07-04 15:11:16浏览次数:71  
标签:form 验证 规则 校验 表单 trigger blur

1、典型表单

 

<el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="活动名称">
    <el-input v-model="form.name"></el-input>
  </el-form-item>
  <el-form-item label="活动区域">
    <el-select v-model="form.region" placeholder="请选择活动区域">
      <el-option label="区域一" value="shanghai"></el-option>
      <el-option label="区域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <el-form-item label="活动时间">
    <el-col :span="11">
      <el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-time-picker placeholder="选择时间" v-model="form.date2" style="width: 100%;"></el-time-picker>
    </el-col>
  </el-form-item>
  <el-form-item label="即时配送">
    <el-switch v-model="form.delivery"></el-switch>
  </el-form-item>
  <el-form-item label="活动性质">
    <el-checkbox-group v-model="form.type">
      <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
      <el-checkbox label="地推活动" name="type"></el-checkbox>
      <el-checkbox label="线下主题活动" name="type"></el-checkbox>
      <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
    </el-checkbox-group>
  </el-form-item>
  <el-form-item label="特殊资源">
    <el-radio-group v-model="form.resource">
      <el-radio label="线上品牌商赞助"></el-radio>
      <el-radio label="线下场地免费"></el-radio>
    </el-radio-group>
  </el-form-item>
  <el-form-item label="活动形式">
    <el-input type="textarea" v-model="form.desc"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">立即创建</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        form: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        }
      }
    },
    methods: {
      onSubmit() {
        console.log('submit!');
      }
    }
  }
</script>

 

elementui checkbox-group多选框怎么选中id值

<el-checkbox-group v-model="checked" @change="test">
    <el-checkbox v-for="item in checkList"
         :key="item.id"
         :label="item.id"
        >{{item.label}}                
    </el-checkbox>
</el-checkbox-group>
 

  注意下绑定值 同时  el-radio-group  一样操作

 

2、表单验证

:model="ruleForm" 必须是对象

在data()中写入rule{},将prop中需要校验的字段写上验证规则

具体看官网示例

3、自定义校验规则

// 表单校验规则
      rules: {
        name: [
          { required: true, message: '部门名称不能为空', trigger: 'blur' },
          { min: 1, max: 50, message: '部门名称要求1-50个字符', trigger: 'blur' },
          // 自定义校验规则
          { validator: validName, trigger: 'blur' }
        ],
        code: [
          { required: true, message: '部门编码不能为空', trigger: 'blur' },
          { min: 1, max: 50, message: '部门编码要求1-50个字符', trigger: 'blur' },
          // 自定义校验规则
          { validator: validCode, trigger: 'blur' }
        ],
        manager: [
          { required: true, message: '部门负责人不能为空', trigger: 'blur' }
        ],
        introduce: [
          { required: true, message: '部门介绍不能为空', trigger: 'blur' },
          { min: 1, max: 300, message: '部门介绍要求1-300个字符', trigger: 'blur' }
        ]
      }

  

在data中定义表单校验规则,一个表单项可定义多条规则,表单项规则用数组,规则为对象,required为必须填写,message为校验提示信息,trigger为校验时机,可选blur和change,分别为失去焦点和数据变化;min/max为最小与最大字符个数,validator为自定义校验规则,参数可以直接写规则,也可以写函数。 

 

配置模板,应用规则
      给表单设置 rules 属性传入验证规则
      给表单设置model属性传入表单数据
      给表单中的元素(Form-Item )设置 prop 属性,其值为设置为需校验的字段名

<el-form ref="deptForm" label-width="120px" :model="form" :rules="rules">
      <el-form-item label="部门名称" prop="name">
        <el-input v-model="form.name" style="width:80%" placeholder="1-50个字符" />
      </el-form-item>
      <el-form-item label="部门编码" prop="code">
        <el-input v-model="form.code" style="width:80%" placeholder="1-50个字符" />
      </el-form-item>
</el-form>

 

   this.$refs.deptForm.validate(valid => {
        if (valid) { // true为校验通过
          
        }
      })

 

 

给form表单添加校验前提是要处理以下三步

  1. 在el-form元素上绑定一个model属性和绑定一个rules规则属性
  2. 在el-form-item,表单项添加一个prop属性
  3. 在el-input输入框添加v-model进行双向绑定

 

动态增减表单项

<el-form-item
    v-for="(domain, index) in dynamicValidateForm.domains"
    :label="'域名' + index"
    :key="domain.key"
    :prop="'domains.' + index + '.value'"
    :rules="{
      required: true, message: '域名不能为空', trigger: 'blur'
    }"
  >
    <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button>
  </el-form-item>

 

data() {
      return {
        dynamicValidateForm: {
          domains: [{
            value: ''
          }],
          email: ''
        }
      };
    },

 

注意重点1
form表单里的 :model="form" :rules="rules"model和rules不能省略,而且这个model必须是个对象,虽然在当前例子里,我们的数据form其实就是一个数组,但是还要包裹一层成对象。
每一项绑定prop时,一定要按照:prop=" 'list.' + index + '.maintUnit'"这种格式,list是需要循环的数组key名,一定不要写成form.list,也不是循环出的每一项item,index是每项的下标,maintUnit是当前字段key值。
每一项必须单独绑定验证规则,如例子中的:rules="rules.maintUnit"
prop和当前字段的key值要保持一致,无论是动态表单还是静态表单都要保持一致
 

 form: {
   list: [{maintUnit:'v' id: Date.now() }] // 这里添加了一个当前时间戳作为循环使用的key,如果使用index作为key,虽然避免的报错,但是对性能没有什么帮助,而且可能增加新能问题。
 },

 

注意重点2  -多层循环 或多个for

官方示例

data() {
    return {
      dynamicValidateForm: {
        relation: {
          pos: {
// 数组1 domains: [{ value: '',
// 数组2 list: [{ name: '' }] }] } }, email: '' } }; },

 

 

 prop内容必须是从根部开始的形式为:“数组+索引+...+最终校验值的命名(最后)”

 

多层循环::数组+索引+数组+索引+数组+索引+最终校验值的命名

 

标签:form,验证,规则,校验,表单,trigger,blur
From: https://www.cnblogs.com/mc-congxueda/p/17524813.html

相关文章

  • 直播系统搭建,随机验证码的生成
    直播系统搭建,随机验证码的生成在JavaScript中,有个随机生成数字的函数叫Math.random(),它能生成0~1之间的数字,下面我给大家简单列了个例子: <head><metacharset="utf-8"><title>随机验证码的生成</title></head><style>#number{width:130px;height:30px;text-align:center;line......
  • C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedExceptio
    C#使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException)代码:HttpListenerlistener=newHttpListener();错误:System.PlatformNotSupportedException:OperationisnotsupportedonthisplatformInSystem.Net.HttpListener..ctor()解决办......
  • C#.NET Framework 使用BC库(BouncyCastle) RSA 私钥签名 公钥验签(验证签名) ver:20230704
    C#.NETFramework使用BC库(BouncyCastle)RSA私钥签名公钥验签(验证签名)ver:20230704 环境说明:.NETFramework4.6的控制台程序 。 2020年以后,有部分PKCS8私钥(openssl生成)无法用RsaUtil.LoadPrivateKey(strPriPkcs8, "PKCS8")来解析 (https://www.cnblogs.com/runliuv......
  • 预训练模型 | Transformer模型的规模大小
    Transformer有两个模型的规模大小标准:base、big。具体去thumt的models文件夹下的Transformer模型实现可以看到其参数大小。我们可以从Transformer模型的原论文(AttentionIsAllYouNeed)中看到,Transformer有两个模型的规模大小标准:base、big。Transformer模型的超参数Tran......
  • [问题记录] C# string.format null值变量值需要显示在占位符
    起因是在C#程序里执行存储过程,恰好参数值里有NULL值变量,可是null值没有填充到占位符上。网上一看,好多都是添加参数的方法(command.Parameters.Add(),DBNull.value)去解决这个问题,实在不想搞的这么麻烦,我就只想简单点。 比如string.Format(@"EXECXXX{0},{1},{2}",parameter......
  • Jmeter学习之五_跟踪被测试服务器的performance
    Jmeter学习之五_跟踪被测试服务器的performance背景这几天简单学习了一些基本的测试过程.可以实现一些简单基本的功能了.今天晚上继续进行了jmeter的一些学习.想着可以在测试人大金仓的同时可以查看一下本地的机器性能.用到的工具以及资料https://www.cnblogs.com/......
  • 解放表单填写!睿鸿动态表单系统2.0助您高效迈进
    随着信息化进程的不断深入和电子化技术的日益成熟,在公共服务领域,越来越多的政府部门开始把传统纸质化的流程转变为数字化的流程。在这个过程中,表单作为重要的信息采集和处理工具,也逐渐由传统的纸质表单向电子表单转换。想要高效表单填写?试试睿鸿动态表单系统2.0相比于1.0版本,睿鸿动......
  • 关于Gin如何在multipart/form-data请求下解析JSON数组
    前言众所周知,在Gin下,如果只是在multipart/form-data请求下解析JSON对象到结构体的话就比较简单。但是如果是要解析JSON数组到对应请求结构体呢?正文举个例子:typeAddItemstruct{IDint`form:"-"` Images[]*multipart.FileHea......
  • Jmeter学习之四_kingbaseV8R6数据库的简单验证
    Jmeter学习之四_kingbaseV8R6数据库的简单验证背景周一没去报道,因为我忘记体检了...继续在家进行学习提高自己.jmeter周末时开始看的.今天想着继续研究一下对数据库的处理突然发现人大金仓的官方csdn有一个文档,所以想着偷师,并且总结学习一下.感谢官网的资料.https......
  • Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED
    CiscoCatalyst8000SeriesEdgePlatforms,IOSXEReleaseDublin-17.11.01aEDCiscoCatalyst8000边缘平台系列请访问原文链接:https://sysin.org/blog/cisco-catalyst-8000/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoCatalyst8000:随心所欲访问位于......