_antvue 必填">
当前位置:   article > 正文

ant-design-vue 1.x 的 a-form-model怎样设置表单必填项(a-form同样适用)_antvue 必填

antvue 必填

背景

吐槽

不知道公司为什么非要用蚂蚁金服1.x版本的组件,还是新项目,问题很多bug不少本文记录第一个必填项bug

问题

项目内a-form-model表单某几个属性需要增加必填项

试了以前element-ui的三种方式

1. rules校验规则:失效

代码:

<a-form-model :rules="rules" layout="horizontal" ref="ruleForm" :model="sendForm" :labelCol="{ span: 5 }" :wrapperCol="{ span: 12 }">

    <a-form-model-item label="发送类型" prop="template_type">

      <a-radio-group v-model="sendForm.template_type">

        <a-radio v-for="(e, index) in templateTypeList" :key="index" :value="e.id">

          {{ e.name }}

        </a-radio>

      </a-radio-group>

    </a-form-model-item>

</a-form-model>

data定义:

rules: {

        template_type: [{ required: true, message: '请选择发送类型', trigger: 'blur' }]

      }

 2. required直接写死:失效

代码:

<a-form-model-item label="测试数据" prop="template_test_json">

      <a-input v-model="sendForm.template_test_json" placeholder="请输入json格式测试数据" required/>

    </a-form-model-item>

 3. vue3实现表单的必填验证:失效,这个是因为蚂蚁金服1.x版本采用vue2

<a-form-model-item label="测试数据" prop="template_test_json">

      <a-input v-model="sendForm.template_test_json" placeholder="请输入json格式测试数据"  :rules="[{ required: true, message: '请输入json格式测试数据' }]"/>

    </a-form-model-item>

解决

  • 设置ref
  • 设置rules规则
  • 在提交数据时,设置必填项验证
  • 如果你是a-form的话需要使用a-form-model代替
  1. <template>
  2. <a-form-model :rules="rules" layout="horizontal" ref="ruleForm" :model="sendForm" :labelCol="{ span: 5 }" :wrapperCol="{ span: 12 }">
  3. <a-form-model-item label="测试数据" prop="template_test_json">
  4. <a-textarea v-model="sendForm.template_test_json" placeholder="请输入json格式测试数据" />
  5. </a-form-model-item>
  6. <a-form-model-item :wrapper-col="{ span: 14, offset: 5 }">
  7. <a-button type="primary" @click="onSubmit(sendForm)">提交</a-button>
  8. </a-form-model-item>
  9. </a-form-model>
  10. </template>
  11. <script>
  12. import { sendMSG } from '@/api/bizmd-server.js'
  13. export default {
  14. data() {
  15. return {
  16. labelCol: { span: 3 },
  17. wrapperCol: { span: 21 },
  18. sendForm: {
  19. template_test_json: ''
  20. },
  21. templateTypeList: [],
  22. rules: {
  23. template_test_json: [{ required: true, message: '请输入测试数据', trigger: 'blur' }]
  24. }
  25. }
  26. },
  27. methods: {
  28. async onSubmit(v) {
  29. // 验证必填项
  30. this.$refs.ruleForm.validate(valid => {
  31. if (!valid) {
  32. return false
  33. } else {
  34. console.log('this.sendForm', this.sendForm)
  35. let res = sendMSG(this.sendForm)
  36. }
  37. })
  38. }
  39. }
  40. }
  41. </script>

至此解决完毕

并非专业前端,有更好的方法希望可以指点一下。

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

闽ICP备14008679号