Vue+Element UI 下,如何给一个表单设置自定义规则或多个验证规则(:rules)
2018-08-30 16:48
1201 查看
依旧是公司里那个Vue+Element UI的项目。今天遇到了一个新的问题:表单中某个选择器的值不同,控制着下面表单内容是否显示。放图:
大概就是这个样子。由后台返回的“发放方式”的数值,控制下面几个input框是否显示。这个实现比较简单,只需要把下面几个框用一个<dev>包裹起来,加上一个v-show=""的判断条件即可,但它们的表单验证让我为难了,因为只看Element UI官网给的方法来看,:rules="rules"只在data下面绑定了一个rules对象,可我这明显需要两套,即如果发放方式为"平台代发"时,只验证一个"发放方式"否则则全部验证。
花了一点时间摸索,我想:如果不像官方给的那样,rules="rules",然后在data下设置rules的值,而是把rules绑定一个函数,这个函数在computed计算属性中,根据不同的条件设置不同的验证方法不就可以了?自己尝试了一下,真的成功了,代码如下:
[code]<el-form class="dialog-body" :rules="rulesList" :model="temp"> <!--这里为表单内容--> </el-form> <script> export default { data() { return { rules: { pay_type: [ { required: true, message: '不能为空', trigger: 'change' } ], accno: [ { required: true, message: '不能为空', trigger: 'blur' } ], accname: [ { required: true, message: '不能为空', trigger: 'blur' } ], otp: [ { required: true, message: '不能为空', trigger: 'blur' } ], username: [ { required: true, message: '不能为空', trigger: 'change' } ], otp_id: [ { required: true, message: '不能为空', trigger: 'change' } ] }, rules2: { pay_type: [ { required: true, message: '不能为空', trigger: 'change' } ] }, } }, computed: { rulesList: function() { if (this.temp.pay_type) { return this.rules } else { return this.rules2 } } },
这样就实现了对一个表单进行两套或以上的验证。
另外一种场景是,给某一个字段添加多条验证规则。由于rules接收的是一个数组,我们在数组中再添加一项即可。
比如下面的例子,我又在后面添加了一条自定义的规则
[code]data() { const validatePass = (rule, value, callback) => { if (this.option) { callback(new Error('请选择列表中已有的选项')) } else { callback() } } return { rules: { firstContract: [ { required: true, message: '不能为空', trigger: ['blur', 'change'] }, { required: true, trigger: 'blur', validator: validatePass } ], } } }
自定义规则中,validator接受的是我自定义的一套规则validatePass,Error为接受的错误提示。
阅读更多
相关文章推荐
- ElementUI使用问题记录:设置路由+iconfont图标+自定义表单验证
- element-ui+vuex共享自定义方法进行表单验证 validator
- vue + ElementUI 关闭对话框清空验证,清除form表单
- Vue ElementUI之Form表单验证遇到的问题
- vue中使用element-ui进行表单验证的实例代码
- 【DWZ】表单验证规则介绍,与如何修改表单验证,如何添加自定义表单验证
- 如何使用thinkphp5的表单验证器以及自定义验证规则?
- Vue Elementui Form表单验证
- 基于vue2.0前端组件库element中 el-form表单 自定义验证填坑
- vue elementUI之Form表单 验证
- vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
- element-ui中表单验证rules
- vue + ElementUI 关闭对话框清空验证,清除form表单
- vue + element-ui 的表单验证失效问题
- vue + ElementUI 关闭对话框清空验证,清除form表单
- elementUI表单校验——自定义验证
- vue elementUI之Form表单 验证
- Vue使用vux-ui自定义表单验证遇到的问题及解决方法
- Vue ElementUi同时校验多个表单(巧用new promise)
- 【OpenWRT之旅】如何自定义一个配置文件的设置界面