首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除react-datepicker中输入的值?

如何清除react-datepicker中输入的值?
EN

Stack Overflow用户
提问于 2017-09-04 19:01:31
回答 1查看 14.3K关注 0票数 8

我使用react-datepicker来实现我们的日历控件。现在的问题是,如果用户输入了一个无效的日期,比如'djfdjfhjkhdf‘,那么在这个控件中就没有什么需要验证的了。因此,我决定编写自己的验证函数,并在发生模糊事件时调用该函数,如果日期无效,则清除用户输入的文本。我的代码是这样的:

代码语言:javascript
复制
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是一个返回truefalse的函数,如果日期有效,则true返回false

EN

回答 1

Stack Overflow用户

发布于 2017-09-04 20:54:18

我找到了解决方案,首先添加控件如下:

代码语言:javascript
复制
<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)}
  />

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

代码语言:javascript
复制
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表示无效日期,则将该值重置为初始状态。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46035634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档