ant-design-vue对起始时间的校验

本文介绍了在ant-design-vue框架下进行起始时间校验的实现过程,包括通过添加v-model确保能获取并校验当前时间字段。尽管已完成了校验功能,但目前遇到了控制台报错的问题,作者寻求解决方案。

ant-design-vue对起始时间的校验

由于要添加对起始时间的校验,项目中无法直接使用this.model.value获取当前的字段,因此需要j-date上添加一组v-model,保证可以获取到当前字段的值,再对其进行校验。(当前也获取不到this.form的值)

img

添加起始时间的自定义校验

img

img

这些方法中的model值是从上面v-model中获取到的

img

至此校验就写好了

img

不过当前存在一个问题,控制台一直有报错,但是未找到合理 的解决方法

img

如有解决报错方法,还请指教。

附上源码:

<template>
  <a-modal :title="title" :width="800" :visible="visible"
           :maskClosable="false" :confirmLoading="confirmLoading"
           :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
           @ok="handleOk" @cancel="handleCancel" cancelText="关闭">

    <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
      <a-spin :spinning="confirmLoading">
        <a-form :form="form">
          <a-row :gutter="24">
            <a-col :md="12" :sm="20">
              <a-form-item label="活动名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-decorator="['name',validatorRules.name]" :disabled="disableSubmit"
                         placeholder="请输入活动名称"></a-input>
              </a-form-item>
            </a-col>
            <a-col :md="12" :sm="20">
              <a-form-item label="活动类别" :labelCol="labelCol" :wrapperCol="wrapperCol" :required='true'>
                <a-tree-select  placeholder="请选择活动类别"  :treeData="activityType" :disabled="disableSubmit" v-model='model.typeid'>
                </a-tree-select>
              </a-form-item>
            </a-col>
          </a-row>
          <a-col :md="17" :sm="20">
              <a-form-item label="活动开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <j-date v-model='model.startDate' v-decorator="['startDate',validatorRules.startDate]" :trigger-change="true" style="width: 100%"
                        :show-time='true' date-format='YYYY-MM-DD HH:mm:ss' placeholder="请选择活动开始时间" :disabled="disableSubmit"/>
              </a-form-item>
            </a-col>
            <a-col :md="17" :sm="20">
              <a-form-item label="活动结束时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <j-date v-model='model.endDate' v-decorator="['endDate',validatorRules.endDate]" :trigger-change="true" style="width: 100%"
                        :show-time='true' date-format='YYYY-MM-DD HH:mm:ss' placeholder="请选择活动结束时间" :disabled="disableSubmit"/>
              </a-form-item>
            </a-col>
          <a-col :md="17" :sm="20">
            <a-form-item label="报名开始时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
        
### 关于 `a-range-picker` 时间区间设置至时分秒 在 Ant Design Vue 的组件库中,`a-range-picker` 是用于选择时间区间的日期选择器。为了满足业务需求并实现时间范围的选择功能,可以利用其内置属性来控制时间和日期的选取行为。 #### 属性说明 - **showTime**: 当启用此属性时,可以选择具体的时间(小时、分钟、秒)。 - **disabledDate**: 可通过该函数禁用某些不可选的日期。 - **disabledTime**: 配合 `showTime` 使用,可以通过此函数进一步限制可选的具体时间段(如小时、分钟、秒)[^1]。 以下是具体的实现方式: --- #### 实现代码示例 ```vue <template> <a-range-picker showTime :format="'YYYY-MM-DD HH:mm:ss'" :disabledDate="disabledDate" :disabledTime="disabledTime" @change="handleChange" /> </template> <script> export default { methods: { handleChange(dates, dateStrings) { console.log('Selected Dates:', dates); console.log('Formatted Date Strings:', dateStrings); }, disabledDate(current) { // 禁止选择今天之前的日期 return current && current < new Date().setHours(0, 0, 0, 0); }, disabledTime() { const hour = new Date().getHours(); return { disabledHours: () => Array.from({ length: hour }, (_, i) => i), disabledMinutes: () => [59], // 示例:禁止选择第59分钟 disabledSeconds: () => [58, 59] // 示例:禁止选择最后两秒钟 }; } } }; </script> ``` --- #### 参数解析 1. **`showTime`**: 启用后,用户可以在选择日期的同时选择具体的时间(小时、分钟、秒),从而支持更精细的时间粒度操作。 2. **`format`**: 定义了输入框显示的时间格式,默认为 `'YYYY-MM-DD'`。当启用了 `showTime` 功能时,需将其修改为包含时间部分的格式字符串,例如 `'YYYY-MM-DD HH:mm:ss'`。 3. **`disabledDate`**: 此函数接收当前日期作为参数,并返回布尔值以决定是否允许选择该日期。上述例子中实现了仅允许选择今天的日期及其之后的部分。 4. **`disabledTime`**: 返回的对象定义了哪些小时、分钟或秒数被禁用。这使得开发者能够灵活地调整界面交互逻辑,比如不允许用户挑选特定时段内的任何时刻。 --- #### 注意事项 如果希望对起始结束两个端点分别应用不同的约束条件,则需要额外处理事件回调中的数据结构,因为默认情况下两者共享相同的配置项。此时可能还需要自定义校验机制确保最终提交的结果符合预期规则。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值