Ant组件——DatePicker 日期选择框

相关文档

DatePicker 日期选择框

业务需求

设置两个时间选择框,一个是开始时间,一个是结束时间,两者相互制约,开始不能早于结束,结束不能小于开始

代码示例

1.html

<a-form-item label="生效日期">
              <date-time-picker @change="getPolicyStartTime"
                                :format="dateFormat"
                                :disabled-date="disabledBeginDate"
                                :value="policyStartTimeValue"
                                :show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
                                :placeholder="请选择生效日期"></date-time-picker>
            </a-form-item>
            <a-form-item label="到期日期">
              <date-time-picker @change="getPolicyEndTime"
                                :format="dateFormat"
                                :value="policyEndTimeValue"
                                :show-time="{ defaultValue: moment('00:00:00', 'HH:mm:ss') }"
                                :disabled-date="disabledEndDate"
                                :placeholder="请选择到期日期"></date-time-picker>
            </a-form-item>

2.js

<script lang="ts">
import moment from 'moment';
export default class Staff extends Vue {
  moment = moment;

  dateFormat = 'YYYY-MM-DD';

policyStartTime: any = null;
policyEndTime: any = null;

 get policyStartTimeValue() {
    const policyStartTime = this.policyStartTime;
    return policyStartTime ? moment(this.policyStartTime) : null;
  }

  get policyEndTimeValue() {
    const policyEndTime = this.policyEndTime;
    return policyEndTime ? moment(this.policyEndTime) : null;
  }
}

  getPolicyStartTime(e: any) {
    this.policyStartTime = e?.valueOf() ?? null;
  }

  getPolicyEndTime(e: any) {
    this.policyEndTime = e?.valueOf() ?? null;
  }

 disabledBeginDate(beginDate: any) {
    const endDate = this.policyEndTime;
    if (!beginDate || !endDate) {
      return false;
    }
    return beginDate > endDate;
  }

  disabledEndDate(endDate: any) {
    const beginDate = this.policyStartTime;
    if (!endDate || !beginDate) {
      return false;
    }
    return beginDate >= endDate;
  }
</script>

3. 总结

主要问题是,日期选择需要的是moment的数据,传递给后台是时间戳的格式

所以通过计算属性把时间戳转化成moment数据,用于前端页面展示

触发事件中把moment数据转化为时间戳储存,用于与后端进行数据传递

限制关系可以通过组件的disabled-date属性,编写对应函数传入即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
antd的DatePicker组件也可以通过类似的方式实现清空功能。antd的DatePicker组件提供了一个allowClear属性,设置为true时就可以显示清空按钮。在清空按钮的点击事件中,可以将DatePicker组件的值设置为null或默认值。 示例代码: ``` import React, { useState } from 'react'; import { DatePicker } from 'antd'; function App() { const [date, setDate] = useState(null); const handleClear = () => { setDate(null); }; return ( <> <DatePicker value={date} onChange={value => setDate(value)} allowClear /> <button onClick={handleClear}>清空</button> </> ); } export default App; ``` 在这个示例中,另一个需要注意的点是,antd的DatePicker组件的值是一个Moment.js对象,而不是一个Date对象。因此,在onChange事件中获取到的value是一个Moment.js对象。如果需要将其转换为Date对象,可以使用toDate方法,例如:value.toDate()。 另外,antd的DatePicker组件还提供了一个ref属性,可以通过获取到这个ref来调用DatePicker组件的方法,包括clear方法。使用方式与React中的示例类似。 示例代码: ``` import React, { useRef } from 'react'; import { DatePicker } from 'antd'; function App() { const datePickerRef = useRef(null); const handleClear = () => { datePickerRef.current.clear(); }; return ( <> <DatePicker ref={datePickerRef} allowClear /> <button onClick={handleClear}>清空</button> </> ); } export default App; ``` 以上是在React中使用antd的DatePicker组件实现清空功能的方法,可以根据实际需要选择适合自己的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值