首页 > 其他分享 >vue动态添加表单validateField验证

vue动态添加表单validateField验证

时间:2023-04-06 19:33:07浏览次数:38  
标签:index vue name form inputs rules 表单 输入框 validateField


1 <template> 2 <el-form ref="form" :model="form" :rules="rules" label-width="100px"> 3 <div v-for="(input, index) in inputs" :key="index"> 4 <el-form-item :label="'Name ' + (index + 1)" :prop="'name' + index"> 5 <el-input v-model="input.name" @blur="validateName(index)"></el-input> 6 </el-form-item> 7 <el-form-item :label="'Age ' + (index + 1)" :prop="'age' + index"> 8 <el-input v-model.number="input.age" @blur="validateAge(index)"></el-input> 9 </el-form-item> 10 </div> 11 <el-button type="primary" @click="addInput">Add input</el-button> 12 <el-button type="primary" @click="submitForm">Submit</el-button> 13 </el-form> 14 </template> 15 16 <script> 17 export default { 18 data() { 19 return { 20 form: {}, 21 inputs: [{name: '',age: ''}], 22 rules: { 23 name0: { required: true, pattern: /^[A-Za-z]+$/, message: 'Name can only contain letters', trigger: 'blur' }, 24 age0: { required: true, pattern: /^\d+$/, message: 'Age can only contain numbers', trigger: 'blur' }, 25 } 26 } 27 }, 28 methods: { 29 addInput() { 30 const index = this.inputs.length 31 this.inputs.push({ name: '', age: '' }) 32 this.$set(this.form, `name${index}`, '') 33 this.$set(this.form, `age${index}`, '') 34 this.$set(this.rules, `name${index}`, { required: true, pattern: /^[A-Za-z]+$/, message: 'Name can only contain letters', trigger: 'blur' }) 35 this.$set(this.rules, `age${index}`, { required: true, pattern: /^\d+$/, message: 'Age can only contain numbers', trigger: 'blur' }) 36 }, 37 validateName(index) { 38 this.$refs.form.validateField(`name${index}`) 39 }, 40 validateAge(index) { 41 this.$refs.form.validateField(`age${index}`) 42 }, 43 submitForm() { 44 this.$refs.form.validate(valid => { 45 if (valid) { 46 // submit form 47 } else { 48 console.log('validation failed') 49 } 50 }) 51 } 52 } 53 } 54 </script> 55

 

可以使用 Element UI 的表单组件结合 Vue 的动态组件来实现动态添加多组输入框,并对每个输入框进行校验。Element UI 提供了很多内置的校验规则和提示信息,可以方便地应用到表单中。

首先,我们需要在 Vue 实例中声明一个 inputs 数组来存储每个输入组的数据。在添加输入组时,我们只需要向 inputs 数组中添加一个新的对象即可。

在模板中,我们使用 Element UI 的表单组件来渲染输入框,并使用 v-for 指令循环渲染多组输入框。在每个输入框中,我们使用 v-model 指令将输入值绑定到 inputs 数组中的数据属性上。对于 name 和 age 输入框,我们使用 pattern 规则来进行校验,并在 rules 对象中提供了相应的错误提示信息。在 checkNameInput 和 checkAgeInput 方法中,我们调用 $refs.form.validateField 方法来手动触发校验,并将当前输入对象作为参数传递进去。

最后,我们需要在 Vue 实例中声明一个 form 对象来维护表单数据,并将 rules 对象传递给 el-form 组件的 rules 属性。这样,每次输入框的值发生变化时,就会自动触发 Element UI 的校验机制,并显示相应的错误提示信息。

标签:index,vue,name,form,inputs,rules,表单,输入框,validateField
From: https://www.cnblogs.com/qutao125/p/17293924.html

相关文章

  • uni-app:nvue:居左/居右/居中对齐(hbuilderx 3.7.3)
    一,代码:居中:<viewstyle="position:fixed;bottom:0;width:750rpx;height:60rpx;display:flex;flex-direction:row;justify-content:center;"><span>{{appName}}version:{{appVersion}}</span></view......
  • vue之数组的方法
    目录简介filter方法简介本文会把遇到的数组的方法慢慢补充进来filter方法filter()方法是一个过虑方法以下面的为例:列表dataList会每次取一个值,把值给匿名函数,并执行。比如第一次过虑会把a给dataList.filter(function(items){xxxx},第二次会把at传给函数,后面依次类推。<s......
  • 2023.04.06 - vue组件中动态指定监听的值
    业务场景:高拍仪给出的视频信息API回调里会不断返回图像数据。因为有主副摄像图像信息,并且两个图像信息会二选一展示在DOM容器里。所以就是二对一的关系。//主摄像数据letpriPic:string='';//副摄像数据letsubPic:string='';//展示在容器的数据=主摄像数据||副摄像......
  • vue 上传大型文件插件(vue上传视频插件)
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • vue3 watch 监听 flush post 作用?
    副作用刷新时机Vue的响应性系统会缓存副作用函数,并异步地刷新它们,这样可以避免同一个“tick”中多个状态改变导致的不必要的重复调用。同一个“tick”的意思是,Vue的内部机制会以最科学的计算规则将视图刷新请求合并成一个一个的"tick",每个“tick”刷新一次视图,比如a=1;b=2;只会......
  • vue.config.js 配置
    const{defineConfig}=require('@vue/cli-service')  //按需引入  //constAutoImport=require('');constAutoImport=require('unplugin-auto-import/webpack')constComponents=require('unplugin-vue-components/webpac......
  • vue前端实现上传文件,vue 上传文件
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • vue第八课:axios库的使用
    axios功能强大的网络请求库。<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>基础使用:axios.get(地址?key=value&key2=values).then(function(response){},function(err){})axios.get(地址,{key:value,key2:value2}).then(function(response......
  • vue3中 toRefs和 toRef 的区别
    toRefs是为了避免对一个响应式对象解构的时候,解构后的每个属性不具有响应性toRef是为了针对单独获取某个对象的属性的时候保持响应性,从而单独对某个对象的属性进行响应式转化针对reactive或者ref创建的响应式对象都可以使用这两个api进行转化注意:toRefs只能对第一层......
  • vue3中路由错误自动跳转404页面 路由表写法
    定义路由表import{createRouter,createWebHashHistory}from"vue-router";constroutes=[ { path:"/", name:"home", component:Home, },//... { path:"/404", name:"404", component:()=&......