当前位置:   article > 正文

element-plus的form表单验证Prop和Rules设置约定_element plus form rules

element plus form rules

在使用表单验证过程中遇到深层对象(即嵌套对象)和数组或动态创建数组对象时验证不再起作用或者出现错误。

官网的说明“Form 组件提供了表单验证的功能,只需为 rules 属性传入约定的验证规则,并将 form-Item 的 prop 属性设置为需要验证的特殊键值即可。 更多高级用法可参考 async-validator。”轻描淡写,看了asyncValidator也没有搞清楚element-plus的rules到底该如何定义。

说明:Form组件包含rules属性,FormItem 组件包含prop和rules属性。Form的rules如不设置则不会触发任何验证,FormItem如不设置则当前item不会触发验证。

默认约定的验证规则是通过formitem设置的prop作为path去form绑定的model和rules中查找对应的值和验证规则。如果不能从model或rules找到对应的属性则不会触发验证机制;如果formitem额外指定了rules则使用额外指定的rules做为验证规则,而忽略从form的rules中查找规则。所以如果formitem同时指定了prop和rules则form的rules可以任意设置。

基于以上规则rules的结构定义必须与model完全匹配,否则必须额外指定rules验证才能生效。

prop作为查找model和rules的路径那到底该怎么定义?关于prop作为path的解释参考

举个例子:

  1. {
  2. const formModel = ref({
  3. name:"",
  4. age:0,
  5. skills:[{name:"",level:0}]
  6. })
  7. const rules:{
  8. name:[{max:8,required:true,message:"name is required",trigger:"blur"}}],
  9. nameAgain:[{max:8,required:true,message:"name is required",trigger:"blur"}}],
  10. skills:{
  11. name:[{max:20,requeired:true,message:"skill name is required",trigger:"blur"}]
  12. level:[{requeired:true,message:"skill level is required",trigger:"blur"}]
  13. }
  14. }
  15. }
  1. <el-form abel-width="auto" ref="formRef" :rules="rules" :model="formModel">
  2. <el-form-item prop="name" label="角色名称">
  3. <el-input v-model="model.name" maxlength="16" clearable></el-input>
  4. </el-form-item>
  5. <el-form-item label="角色年龄">
  6. <el-input v-model="model.age" clearable></el-input>
  7. </el-form-item>
  8. <el-form-item prop="skills[0].name" :rules="rules.skills.name" label="第一个技能名称">
  9. <el-input v-model="model[0]!.name" clearable></el-input>
  10. </el-form-item>
  11. <el-form-item prop="skills.0.level" :rules="rules.skills.level" label="第一个技能等级">
  12. <el-input v-model="model[0]!.level" clearable></el-input>
  13. </el-form-item>
  14. </el-form>

单独指定formItem的rules:

<el-form-item prop="name" label="角色名称">可以定义成<el-form-item prop="name" :rules= "rules.nameAgain" label="角色名称">  此时通过model.name查找值,通过rules.nameAgain查找验证规则。 

模型的数组结构skills验证时通过props ="skills[0].name" 或props ="skills.0.name"来定义path都是有效的,但无法正确获取到rules中对应的规则;并且也不会去定义和model结构一直的数组,所以需要单独设置:rules="rules.skills.name"。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/472391
推荐阅读
相关标签
  

闽ICP备14008679号