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

背景

  • "ant-design-vue": "1.7.6"

  • vue2

吐槽

不知道公司为什么非要用蚂蚁金服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代替
<template>
  <a-form-model :rules="rules" layout="horizontal" ref="ruleForm" :model="sendForm" :labelCol="{ span: 5 }" :wrapperCol="{ span: 12 }">
    <a-form-model-item label="测试数据" prop="template_test_json">
      <a-textarea v-model="sendForm.template_test_json" placeholder="请输入json格式测试数据" />
    </a-form-model-item>
    <a-form-model-item :wrapper-col="{ span: 14, offset: 5 }">
      <a-button type="primary" @click="onSubmit(sendForm)">提交</a-button>
    </a-form-model-item>
  </a-form-model>
</template>

<script>
import { sendMSG } from '@/api/bizmd-server.js'
export default {
  data() {
    return {
      labelCol: { span: 3 },
      wrapperCol: { span: 21 },
      sendForm: {
        template_test_json: ''
      },
      templateTypeList: [],
      rules: {
        template_test_json: [{ required: true, message: '请输入测试数据', trigger: 'blur' }]
      }
    }
  },
  methods: {
    async onSubmit(v) {
      // 验证必填项
      this.$refs.ruleForm.validate(valid => {
        if (!valid) {
          return false
        } else {
          console.log('this.sendForm', this.sendForm)
          let res = sendMSG(this.sendForm)
        }
      })
    }
  }
}
</script>

至此解决完毕

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

相关推荐

  1. Ant Design Vue组件a-form-item-rest使用

    2024-01-13 17:10:04       64 阅读
  2. 设置ant-design vuea-input输入类型为数字

    2024-01-13 17:10:04       46 阅读
  3. Ant Design Vue 组件库a-tab-pane>force-render

    2024-01-13 17:10:04       31 阅读
  4. vue设置

    2024-01-13 17:10:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 17:10:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 17:10:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 17:10:04       82 阅读
  4. Python语言-面向对象

    2024-01-13 17:10:04       91 阅读

热门阅读

  1. QT-发送HTTP请求/QNetworkAccessManager

    2024-01-13 17:10:04       60 阅读
  2. 案例分享:游戏行业各岗位的KPI绩效指标制定

    2024-01-13 17:10:04       61 阅读
  3. 银行网络安全数字化挂图作战体系建设

    2024-01-13 17:10:04       55 阅读
  4. 欢迎关注我的公众号

    2024-01-13 17:10:04       60 阅读
  5. linux离线安装git

    2024-01-13 17:10:04       58 阅读
  6. 09-资源隔离:为什么构建容器需要 Namepace ?

    2024-01-13 17:10:04       40 阅读