Ant Design Vue表单校验报错

 1、使用ant-form组件的表单校验,表单有值还是校验不通过

<template>
  <div class="product-box">
    <div class="product-container">
      <div class="header">
        <div class="c_title">
          <div class="line"></div>
          <span>产品封面图播放参数设置</span>
        </div>
      </div>
      <div class="form-container">
        <a-form
          ref="formRef"
          :model="formState"
          :rules="rules"
          :label-col="{ span: 5 }"
          :wrapper-col="{ span: 6 }"
        >
          <a-form-item label="轮播展示间隔时长(秒):" name="carouselTime">
            <a-input v-model:value="formState.carouselTime" placeholder="请输入" />
          </a-form-item>
          <a-form-item label="轮播样式顺序:" name="carouselSort">
            <a-select v-model:value="formState.carouselSort" placeholder="请选择">
              <a-select-option :value="1">图片优先</a-select-option>
              <a-select-option :value="2">视频优先</a-select-option>
            </a-select>
          </a-form-item>
        </a-form>
      </div>
      <div class="footer">
        <div class="foot_btn">
          <Space :size="28">
            <a-button type="primary" @click="handleUpdate">更新</a-button>
          </Space>
        </div>
      </div>
    </div>
  </div>
</template>
<script setup lang="ts">
  import { ref, onMounted } from 'vue';
  import {
    Form as AForm,
    FormItem as AFormItem,
    Select as ASelect,
    SelectOption as ASelectOption,
    Input as AInput,
    message,
    Space,
  } from 'ant-design-vue';
  import {
    getProductCarouselParam,
    saveProductCarouselParam,
  } from '/@/api/jm-worker-hospital/business/productCarouselParam/productCarouselParam';
  const formRef = ref();
  const formState = ref({ carouselId: 0, carouselSort: 1, carouselTime: 2 });
  const rules = {
    carouselTime: [
      {
        required: true,
        message: '请输入轮播间隔时长',
        trigger: ['change'],
      },
    ],
    carouselSort: [
      {
        required: true,
        message: '请选择轮播样式顺序',
        trigger: ['change'],
      },
    ],
  };
  const getData = async () => {
    const res = await getProductCarouselParam();
    console.log(res.data, 'res.data');

    Object.assign(formState.value, res.data);
    console.log(formState.value, 'formState.value');
  };
  const handleUpdate = () => {
    console.log(formState.value, 'formState.value');
    formRef.value
      .validate()
      .then(() => {
        saveProductCarouselParam(formState.value).then((res) => {
          if (res.code === 200) {
            message.success('操作成功');
            getData();
          } else {
            message.error(res.message);
          }
        });
      })
      .catch((error) => {
        console.log(error, 'error');
      });
  };
  onMounted(() => {
    getData();
  });
</script>

是因为rules如果不设置type的话,type默认值为string,我这里form内的数据都是number格式所以校验不通过,rules加一个type为number就可以了

  const rules = {
    carouselTime: [
      {
        required: true,
        type: 'number',
        message: '请输入轮播间隔时长',
        trigger: ['change'],
      },
    ],
    carouselSort: [
      {
        required: true,
        type: 'number',
        message: '请选择轮播样式顺序',
        trigger: ['change'],
      },
    ],
  };

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值