gpt4 book ai didi

javascript - react .js : disable DateTime when changed to the past

转载 作者:行者123 更新时间:2023-11-30 15:46:38 28 4
gpt4 key购买 nike

我正在使用 react-datetime 并希望禁止任何人选择过去的日期/时间,因为这将发送过去不应发送的电子邮件。 Documentation向我展示了如何禁用之前的日期,但是当我尝试禁用分钟时,它仍然可以在日历的下拉框中手动更改。下面的代码是一个大型电子邮件平台的一部分,但应该能够理解这些片段。文件生活here你也可以在那里看到整个仓库。

理想情况下,如果有人选择过去一分钟或更长时间的日期或时间,它应该跳回当前,并且只有在当前时刻才能“发送”。任何帮助都会很棒 - 谢谢!

  isValidDate(dt) {
return (dt >= (moment().startOf('day')))
&& (dt <= moment().add(30, 'days'))
&& moment().subtract(1, 'minute');
}

我已经尝试了上面的方法,但还是让你手动编辑 :(

class EmailSendDialog extends Component {
constructor(props) {
super(props);
this.state = {
listId: null,
now: true,
date: moment(),
tz: this.defaultTz
};
}

handleDateTimeSelect(date) {
this.setState({ date });
}

isValidDate(dt) {
return (dt >= (moment().startOf('day')))
&& (dt <= moment().add(30, 'days'))
&& moment().subtract(1, 'minute');
}

要渲染,我有这个:

      <DateTime
value={date}
dateFormat="D MMM YYYY"
isValidDate={this.isValidDate}
onChange={(_date) => this.handleDateTimeSelect(_date)}
/>

最佳答案

太棒了 - 我会继续回答我自己的问题 ;)

  handleDateTimeSelect(date) {
if (date < moment()) {
date = moment();
}
this.setState({ date });
}

这会将我们所处的时刻设置为现在,即使您尝试手动更改它,它也会跳回。

修订
为了减少计算量,我最后使用了以下内容:

  handleDateTimeSelect(date) {
const currentDate = moment();
date = date < currentDate ? currentDate : date;
this.setState({ date });
}

关于javascript - react .js : disable DateTime when changed to the past,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com