8

我正在使用react-datepicker我们的日历控件。现在的问题是,如果用户输入了一个无效的日期,比如“djfdjfhjkhdf”,那么在这个控件中没有什么可以验证的。所以我决定编写自己的验证函数,如果日期无效,则在模糊事件上调用它,然后清除用户输入的文本。我的代码是这样的:

import DatePicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker.css';
focousOut(value) {
 this.handleChange('');
}
handleChange(date) {
 this.setState({ selectedValue: date });
 this.setState({ startDate: date });
}

<DatePicker
 selected={this.state.selectedValue}
 value={this.state.startDate}
 onChange={this.handleChange}
 onBlur={event => this.focousOut(event.target.value)} />

validateDate是一个将返回的函数,true或者false,如果日期有效则true返回false。我怎样才能达到这个要求,你能帮我吗?

4

1 回答 1

4

我发现解决方案首先将控件添加为:

<DatePicker
   selected={this.state.selectedValue}
   value={this.state.startDate}
   onChange={this.handleChange}
   onChangeRaw={(event) =>
   this.handleChangeRaw(event.target.value)}
   onBlur={event => this.focousOut(event.target.value)}
  />

现在,为事件添加以下代码:

handleChangeRaw(value) {
 this.setState({ startDate: value });
}
handleChange(date) {
 this.setState({ selectedValue: date });
}
focousOut(value) {
if (!validateDate(value)) {
    this.setState({ startDate: '' });
    this.setState({ selectedValue: moment() });
   }
}

validateDate是用于验证日期的函数。如果它返回false意味着无效日期,在这种情况下将值重置为初始状态。

于 2017-09-04T12:54:18.310 回答