javascript - 当输入类型='date'被清除时如何捕获?

标签 javascript reactjs

我试图捕捉我的日期输入何时清除为“MM/DD/YYYY”。我不希望我的输入永远是“MM/DD/YYYY”。我怎样才能捕获它并在清除后更改其值?我的函数看起来像这样,但似乎不起作用。

   handleChange = event => {
        if(isNaN(event.target.value)){
         event.target.value = moment().format("MM/DD/YYYY");
         return;
        }
         this.setState({date: event.target.value});
        }

最佳答案

您是否使用date类型的原生HTML输入元素?

<input type="date" />

如果是,则空输入 ('MM/DD/YYYY') 会简单地解释为空字符串''

首先,我们必须在组件内维护日期状态,并且输入值将映射到date的值。然后,在 onChange 事件中,如果输入值为空字符串,您可以通过使用 更新状态,将 if 语句中的日期重置为今天的日期setState(),并用今天的日期更新值。

class YourComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      date: ""
    };
  }
  onChange = e => {
    const date = e.currentTarget.value;
    if (date === "") {
      this.setState({
        date: moment().format("YYYY-MM-DD")
      });
    } else {
      this.setState({
        date
      });
    }
  };

  render() {
    const { date } = this.state;

    return <input type="date" value={date} onChange={e => this.onChange(e)} />;
  }
}

我已经通过 here 创建了一个演示

关于javascript - 当输入类型='date'被清除时如何捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539076/

相关文章:

javascript - react /减少。从其他组件访问状态

javascript - 属性更改后 JQuery 函数仍在运行

javascript - Angular 服务中的 oop 类

javascript - 如何将方程作为字符串传递给 Mathjax?

javascript - XMLHttpRequest GET 在 React.js 中不起作用

javascript - 从 React.Children 获取返回变量

javascript - &lt;input&gt; 标签不适用于我的函数

javascript - Bootstrap 4 侧边栏菜单在页面重新加载时保持打开状态

c# - React 组件中的枚举数到字符串

javascript - 有条件地渲染父组件内的子组件