【发布时间】:2018-02-13 15:28:58
【问题描述】:
我正在为我们的日历控件使用 react-datetime。现在问题是 如果用户输入了一个无效的日期,比如“djfdjfhjkhdf”,那么在 这个控件没有什么可以验证的。所以我决定自己写 验证函数,如果日期无效,则在模糊事件上调用它 然后清除用户输入的文本。我的代码是这样的:-
import DatePicker from 'react-datetime';
focousOut(value) {
if (!validateDate(value)) {
this.setState({ startDate: ''});
this.setState({ selectedValue: '' });
}
}
handleChange(date) {
this.setState({ selectedValue: date });
this.setState({ startDate: date });
}
<Datetime
timeFormat={false}
value={this.state.selectedValue}
defaultValue={this.state.startDate}
onChange={this.handleChange}
onBlur={this.focousOut}
locale='en-US'
dateFormat
closeOnSelect
/>
【问题讨论】:
-
您是否尝试过将
this.state.selectedValue设置为空字符串? -
@bennygenel 我试过了,但没有用,我在上面的问题中修改了我的焦点功能。仍然没有用。
-
当日期无效但不知道如何清除所有输入时,您可以将日期设置为今天或其他默认日期。
-
顺便说一句,你不需要使用多个
setState。例如,只需:this.setState({startDate: '', selectedValue: ''}); -
@Chris 是的,不需要设置多个 setState,我同意了,但它不会解决上述情况。