Vue组件中通过v-for循环动态生成form表单进行表单校验

28 篇文章 3 订阅

在做项目时,需要根据需要动态添加或新增表单,同时还需要对表单做校验。详情如下图:
在这里插入图片描述
刚开始做表单验证的时候,对于这个动态的表单验证有点难搞,试了好几种方法都没有搞定。最后按照下面这种方法实现了,以此篇博客留作记录,方便下次遇到类似的需求时直接开发。

<a-form :model="warnData" ref="warnDataRef" :rules="rules" :label-col="labelCol">
	<div class="title">
    	<strong>环保运营班长</strong>
     	<a-button class="btn" @click="addItem('monitor')" size="small">新增</a-button>
     	<a-row v-for="(item, index) in warnData.monitorInfoList" :key="index">
     		<a-col :span="10">
            	<a-form-item label="姓名" :name="['monitorInfoList', index, 'workName']" :rules="[{required: true, message: '请输入姓名', trigger: 'blur'}]">
                	<a-input v-model:value.trim="item.workName" />
                </a-form-item>
             </a-col>
             <a-col :span="10">
                    <a-form-item label="工号" :name="['monitorInfoList', index, 'workId']" :rules="[{required: true, message: '请输入工号', trigger: 'blur'}]" style="display: flex; flex-wrap: nowrap">
                    	<a-input v-model:value.trim="item.workId" />
                            <a-button @click="delMonitor(index)" type="link">删除</a-button>
                    </a-form-item>
             </a-col>
     	</row>
 	</div>
</a-form>
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
V-decorator是基于Vue.js表单校验插件,它可以帮助我们在Vue.js更方便地实现表单校验。 以下是一个简单的使用v-decorator进行表单校验的例子: ```html <template> <div> <form> <div> <label for="name">姓名:</label> <input type="text" id="name" v-model="name"> </div> <div> <label for="age">年龄:</label> <input type="number" id="age" v-model="age"> </div> <div> <button @click.prevent="submitForm">提交</button> </div> </form> </div> </template> <script> import { required, numeric } from 'vuelidate/lib/validators'; import { validationMixin } from 'vuelidate'; export default { name: 'MyForm', mixins: [validationMixin], data() { return { name: '', age: '', }; }, validations: { name: { required, }, age: { required, numeric, }, }, methods: { submitForm() { this.$v.$touch(); if (!this.$v.$invalid) { // 表单校验通过 console.log('表单校验通过'); } }, }, }; </script> ``` 在上面的例子,我们使用了vuelidate来完成表单校验,具体步骤如下: 1. 安装vuelidate和v-decorator ```bash npm install --save vuelidate v-decorator ``` 2. 在组件引入vuelidate和v-decorator ```javascript import { required, numeric } from 'vuelidate/lib/validators'; import { validationMixin } from 'vuelidate'; ``` 3. 在组件使用validationMixin ```javascript mixins: [validationMixin], ``` 4. 在组件的data定义需要校验表单项 ```javascript data() { return { name: '', age: '', }; }, ``` 5. 在组件的validations定义每个表单项的校验规则 ```javascript validations: { name: { required, }, age: { required, numeric, }, }, ``` 6. 在组件调用$v.$touch()方法触发表单校验 ```javascript submitForm() { this.$v.$touch(); if (!this.$v.$invalid) { // 表单校验通过 console.log('表单校验通过'); } }, ``` 通过以上步骤,就可以轻松地使用v-decorator进行表单校验了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值