我正在使用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:更改为过去时禁用DateTime,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39961456/