react+antd的RangePicker日期选择器实现只选择一天内或者7天内的时间的方法

本文展示了如何在React应用中使用DatePicker组件创建一个范围日期选择器,并通过`disabledDate`、`onCalendarChange`和`onChange`等方法实现选择时间限制,确保用户只能选择一天内的日期。代码示例中还提到了如何调整限制条件以选择七天内的日期。
摘要由CSDN通过智能技术生成

 需求是选择范围日期选择器,需要是第一个选择时间的一天内,直接上代码

  //  设置不可选择时间
  const [dates, setDates] = useState();
  const disabledDate = (current) => {
    if (!dates) {
      return false;
    }
    const tooLate = dates[0] && current.diff(dates[0], 'days') > 0;
    const tooEarly = dates[1] && dates[1].diff(current, 'days') > 0;
    return !!tooEarly || !!tooLate;
  };
// 日期选择器打开时的事件
  const onOpenChange = (open) => {
    console.log('onOpenChange');
    if (open) {
      setDates([null, null]);
      searchForm.setFieldsValue({'period': [null, null]});
    } else {
      setDates([...dates]);
    }
  };


//日期选择器
              <DatePicker.RangePicker
                    showTime={{
                      hideDisabledOptions: true,
                      defaultValue: [moment('00:00', 'HH:mm'), moment('11:59', 'HH:mm')],
                    }}
                    format="YYYY-MM-DD HH:mm"
                    size="large"
                    className="basic_search_from_item"
                    disabledDate={disabledDate}
                    onCalendarChange={(val) => {
                      console.log(val, 'onCalendarChange的val的值');
                      setDates(val);
                    }}
                    onChange={(val) => {
                      console.log(val, 'onChange的val的值');
                      setDates(val);
                      searchForm.setFieldsValue({'period': val});
                    }}
                    onOpenChange={onOpenChange}
                    onBlur={() => console.log('blur has been triggered')}
                  />

注意日期选择的这四个配置属性

disabledDate,onCalendarChange,onChange,onOpenChange

即可实现日期的选择限制

同理

const tooLate = dates[0] && current.diff(dates[0], 'days') > 0;
const tooEarly = dates[1] && dates[1].diff(current, 'days') > 0;

选择七天范围内,也可将后缀改为7

const tooLate = dates[0] && current.diff(dates[0], 'days') > 7;
const tooEarly = dates[1] && dates[1].diff(current, 'days') > 7;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下拉选择可以使用 Ant Design Mobile Picker 组件实现。以下是一个简单的例子: ```jsx import React, { useState } from 'react'; import { Picker } from 'antd-mobile'; function SelectExample() { const [value, setValue] = useState(null); const data = [ { label: '北京', value: 'beijing' }, { label: '上海', value: 'shanghai' }, { label: '广州', value: 'guangzhou' }, { label: '深圳', value: 'shenzhen' }, ]; return ( <Picker data={data} value={value} onChange={setValue} cols={1} className="forss" > <div>请选择城市</div> </Picker> ); } export default SelectExample; ``` 在这个例子,我们首先引入了 `Picker` 组件,然后定义了一个 `SelectExample` 组件。在 `SelectExample` 组件,我们使用React 的 `useState` 钩子来保存选择的值。然后,我们定义了一个数据数组 `data`,其包含了可选项的标签和值。接着,在 `Picker` 组件,我们传入了 `data`、`value`、`onChange`、`cols` 和 `className` 等属性。其,`data` 表示可选项的数据,`value` 和 `onChange` 则分别表示当前选的值和选择后的回调函数,`cols` 表示选择器的列数,`className` 则表示选择器的样。最后,我们在 `Picker` 组件还传入了一个 `div` 元素,用来显示选择器的提示信息。 当用户点击选择器时,会弹出一个下拉框,用户可以在其选择一个选项。选择后,会自动更新 `value` 的值,并且触发 `onChange` 回调函数。我们可以根据 `value` 的值来进行后续操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值