本文介绍: a-input v-model=”sendForm.template_test_json” placeholder=”请输入json格式测试数据” :rules=”[{ required: true, message: ‘请输入json格式测试数据’ }]”/>

背景

  • “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>

至此解决完毕

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

原文地址:https://blog.csdn.net/FanZaiYo/article/details/135547896

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_55914.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注