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

时间:2017-09-04 11:01:31

标签: reactjs react-datepicker

  

我正在使用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的函数,如果是   date有效然后返回true,否则返回false。我怎样才能实现这个目的   要求,请帮助我?

1 个答案:

答案 0 :(得分:1)

  

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

<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表示无效日期,在这种情况下将值重置为初始值   状态。