注意:我知道我们使用Set来去掉数组中的重复项。
我有一个date dropdown.When我选择一个日期,它会在列表中正确地显示日期。
但问题是,如果我选择了一个已经选择的日期,它也会显示在列表中。我希望如果用户选择了一个已经选择的日期,它不应该添加到列表中,而是显示错误“你不能选择相同的日期”。
以下是代码-->
<Col md={12}>
<Datetime
timeFormat={false}
dateFormat={dateFormate}
// onChange={this.handleStartDate}
onBlur={this.handleStartDate}
onFocus={this.onFocus}
/>
</Col>
{dateDay.map((dateday, dateDayindex) => (
<Col md={1} className="p-t-6">
{dateday.date}
</Col>
)}//handleStartDate
handleStartDate = (date) => {
const { dateDay } = this.state;
const selectedDate = moment(date).format('DD/MM/YYYY');
this.setState(
{
isSelectedDate: true,
},
() => {
this.addDate(selectedDate);
},
);
};
addDate = (selectedDate) => {
const { dateDay } = this.state;
const obj = { wday: '', interval: [], date: selectedDate, type: 'date' };
const newInterval = { from: '9:00am', to: '10:00am', error: null };
obj.interval.push(newInterval);
arr.push(obj);
if (arr.length > 1) {
const isOverlaped = this.checkTimeOverlap(arr, arr.length - 1);
if (isOverlaped) {
newInterval.error = 'Time overlap with another set of times';
}
if (selectedDate === 'Invalid date') {
newInterval.error = 'Please select a valid date';
}
}
this.setState({ dateDay: arr });发布于 2021-04-05 15:35:41
在handleStartDate中进行验证,以检查所选日期是否已处于dateDay状态:
handleStartDate = (date) => {
const { dateDay } = this.state;
const selectedDate = moment(date).format('DD/MM/YYYY');
// If selectedDate doesn't exist on the dateDay state, add it. Otherwise, show alert message
if (!dateDay.find(obj => obj.date === selectedDate)) {
this.setState(
{
isSelectedDate: true,
},
() => {
this.addDate(selectedDate);
},
);
} else {
alert('You cannot choose the same date')
}
};https://stackoverflow.com/questions/66949580
复制相似问题