博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue使用Element组件时v-for循环里的表单项验证
阅读量:5902 次
发布时间:2019-06-19

本文共 1645 字,大约阅读时间需要 5 分钟。

标题描述看起来有些复杂,有vueElement,又有表单验证,还有v-for循环?是不是有点乱?不过我相信开发中遇到过此问题的同学,一看就明白我说的意思了。

首先Element组件有一套完善的表单验证方法,官方文档写的也很清楚:,正常按照官方文档添加rules规则,需要验证的表单项设置prop,然后提交表单时通过formvalidate方法验证表单项就可以了。

然鹅问题来了,如果表单项里有通过v-for动态生成的表单项,如何设置验证呢?这个官方文档并没有明确的说法,我们通过查找解决方案和实际验证,总结出来解决方法如下。

*本教程写完以后再查官方文档发现其实已经有官方demo了[捂脸],不过官方文档隐藏的不易发现,参见->,并且我的方法更优化简洁一些

首先是循环表单项没有加验证之前的代码:

首先是添加rules规则,这个和正常添加规则一样:

productGroupRules: {  productGroupNum: [{required: true, message: '请填写商品数量', trigger: 'blur'}],  productGroupPrice: [{required: true, message: '请填写优惠价格', trigger: 'blur'}]}

然后给表单项添加验证,以商品数量为例:

注意这里:rules是每个表单项都要添加,有多个的话用productGroupRules.productGroupNum这样的形式区分,对应上面productGroupRules里的内容。

另外主要就是:prop了,注意正常验证表单项是prop,而这里是:prop

:prop="`productGroup.${index}.num`"是拼接的形式(此处按 北月武士 的建议修改了,谢谢 北月武士),前面是v-for绑定的数组,中间是数组索引index,最后是表单项绑定的v-model的名称,然后用点.把它们连接起来。这三项都必须保证正确,错一个都无法验证。另外要注意"`productGroup.${index}.num`"这里是`反引号而不是'单引号,因为这里是ES6模板字符串用法。

另外就是要注意,v-for绑定的数组也必须绑定在form对象里,注意上面的data里:

form: {  activityName: '',  status: '1',  productGroup: [{num:"",price:""}]}

如果是:

form: {  activityName: '',  status: '1'},productGroup: [{num:"",price:""}]

是无法验证的,这一点也要注意。

好了,以上就是解决vue使用Element组件时v-for循环里的表单项验证的解决方案了,希望能帮助到遇到此问题的同学。

转载地址:http://zyupx.baihongyu.com/

你可能感兴趣的文章
Fedora 安装fcitx输入法
查看>>
沃通SSL证书支持ECC算法吗?
查看>>
javassist用法总结
查看>>
求dojo/domReady不能在sync loader下使用的原因
查看>>
全球域名商(国际域名)解析量排行榜TOP20(6月9日)
查看>>
pyqt删除控件的坑
查看>>
FreeBSD9.0加速ports的升级速度
查看>>
Cacti插件安装之NTOP
查看>>
linux系统下MYSQL备份与恢复
查看>>
分享Silverlight/WPF/Windows Phone一周学习导读(9月26日-9月30日)
查看>>
云栖专辑 | 阿里开发者们的第4个感悟:自驱是最好的进步方式
查看>>
Rome2rio:帮助旅游者提供最佳的出游路线
查看>>
驾照选项考试的一些学习心得
查看>>
oracle体系结构----逻辑结构
查看>>
好程序员web前端分享CSS3弹性盒
查看>>
linux中启动Tomcat
查看>>
DNS 委派
查看>>
PostgreSQL给模糊搜索加索引
查看>>
MSS的类型划分
查看>>
java学校
查看>>