_vue3循环表单校验">
当前位置:   article > 正文

vue3 Element通过v-for循环渲染的form表单验证_vue3循环表单校验

vue3循环表单校验

在我们的业务开发中,有时候会经常遇到动态v-for循环渲染出el-form-item,那么这些动态生成的el-form-item如何来进行表单验证

  1. <el-form :model="accountFormDatas" :inline="true" ref="accountFormRef" label-width="120px" :rules="rulesTwo">
  2. <div>
  3. <el-form-item label="RFID">
  4. <el-radio v-model="accountFormDatas.isRfid" label="1"></el-radio>
  5. <el-radio v-model="accountFormDatas.isRfid" label="0"></el-radio>
  6. </el-form-item>
  7. </div>
  8. <div style="margin-top: -10px">
  9. <el-form-item label="是否有编号">
  10. <el-radio-group v-model="accountFormDatas.isCode" @change="agreeChange">
  11. <el-radio label="1" :disabled="disables"></el-radio>
  12. <el-radio label="0" :disabled="disabledAdd"></el-radio>
  13. </el-radio-group>
  14. </el-form-item>
  15. </div>
  16. <div style="width: 860px; height: 130px; border: 1px solid gray; margin-bottom: 50px" v-show="addAccountForm" v-for="(item, index) in accountFormDatas.applyNeed" :key="index">
  17. <div style="display: flex; margin-top: 10px">
  18. <el-form-item label="工具编号" :prop="`applyNeed.${index}.code`" :rules="rulesTwo.code">
  19. <el-input v-model="item.code" :disabled="disables" style="width: 140px"></el-input>
  20. </el-form-item>
  21. <el-form-item label="状态" :prop="`applyNeed.${index}.status`" :rules="rulesTwo.status">
  22. <el-select v-model="item.status" placeholder="Select" size="small" :disabled="disables" style="width: 120px">
  23. <el-option label="正常" value="0"></el-option>
  24. <el-option label="维护" value="1"></el-option>
  25. <el-option label="修理" value="2"></el-option>
  26. <el-option label="停用" value="3"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="报废时间">
  30. <el-input v-model="item.scrapTime" :disabled="disables"></el-input>
  31. </el-form-item>
  32. </div>
  33. <div>
  34. <el-form-item label="条形码" :prop="`applyNeed.${index}.barCode`" :rules="rulesTwo.barCode">
  35. <el-input v-model="item.barCode" :disabled="disables"></el-input>
  36. </el-form-item>
  37. <el-form-item label="存放位置">
  38. <el-input v-model="item.storagePlace" :disabled="disables" style="width: 150px"></el-input>
  39. </el-form-item>
  40. <div style="text-align: right; padding: 0 10px;">
  41. <el-button type="danger" icon="el-icon-delete" circle @click="deleteNeed(index)"></el-button>
  42. <el-button type="primary" icon="el-icon-plus" circle @click='addNeed'></el-button>
  43. </div>
  44. </div>
  45. </div>
  46. </el-form>

 el-form  的  :model="accountFormDatas"  需要和  

v-for="(item, index) in accountFormDatas.applyNeed"  保持一致 

  1. const rulesTwo = { // 入库表单验证规则
  2. code: [
  3. { required: true, message: '请填写工具编号', trigger: 'blur' }
  4. ],
  5. name: [
  6. { required: true, message: '请填写工具名称', trigger: 'blur' }
  7. ],
  8. status: [
  9. { required: true, message: '请选择', trigger: 'change' }
  10. ],
  11. barCode: [
  12. { required: true, message: '请选择', trigger: 'blur' }
  13. ]
  14. }
  15. return {
  16. rulesTwo
  17. }

 最后添加验证

  1. const submitPopup = async () => { // 点击保存 关闭页面
  2. await accountFormRef.value.validate() // 正则判断
  3. }

 

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