javascript - 当日期选择器关闭时调用函数,当我仅单击日期选择器外部时

标签 javascript reactjs react-datepicker

是否可以将日期选择器设置为仅在我单击日期选择器外部时关闭?关闭日历时,如果选择了日期,会调用alertDate函数?

此处代码:https://stackblitz.com/edit/react-o8dm7y

class App extends Component {
  constructor() {
    super();
    this.state = {
      selectedDate: '',
      arrayDates: []
    };
  }

  handleChangeDate = (date) => {
    let newArrayDates = [...this.state.arrayDates]
    newArrayDates.push(date)

    this.setState({
      selectedDate: date,
      arrayDates: newArrayDates
    })
  }

  alertDate = () => {
    console.log(this.state.selectedDate)
  }

  render() {
    console.log(this.state.arrayDates)
    return (
      <div>
         <DatePicker
            selected={this.state.selectedDate}
            onChange={this.handleChangeDate}
            showTimeSelect
            timeFormat="HH:mm"
            timeIntervals={15}
            dateFormat="MMMM d, yyyy h:mm aa"
            timeCaption="time"
            placeholderText="Choose date..."
          />
      </div>
    );
  }
}

最佳答案

以下是您问题的解决方案:

  1. 您可以将 shouldCloseOnSelect 设置为 false,以仅在在外部点击时关闭日期选择器。
  2. 对于调用 alertDate,您可以将其放入 onBlur 回调中。

以下是适合您的示例:

class App extends React.Component {
  state = {
    startDate: new Date()
  };

  handleChange = date => {
    this.setState({
      startDate: date
    });
  };

  handleOnBlur = event => {
    const date = new Date(event.target.value);
    console.log(date);
  };

  render() {
    return (
      <DatePicker
        key="example9"
        selected={this.state.startDate}
        onChange={this.handleChange}
        shouldCloseOnSelect={false}
        onBlur={this.handleOnBlur}
        placeholderText="View blur callbacks in console"
      />
    );
  }
}

希望这有帮助!

关于javascript - 当日期选择器关闭时调用函数,当我仅单击日期选择器外部时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57616929/

相关文章:

javascript - useEffect 的回调的 return 语句什么时候执行?

javascript - 输入类型=从匿名函数调用时不触发文件单击

javascript - 需要说明 : is it correct to return an array from a stateless component in React?

javascript - 如何在 React Redux 中渲染日期对象?

reactjs - 时间戳格式不支持 React `react-datepicker` 作为默认值

javascript - React Datepicker 不会缩小到父容器

javascript - 重构复杂 if 表达式的最佳方法

javascript - Symfony2 + Doctrine + FormType,关系和动态添加行

javascript - 测试元素是否隐藏

javascript:控制台日志使用父范围