javascript - 输入字段的 onChange 函数不起作用

标签 javascript reactjs events

尝试更改输入字段的状态,但 onChange 似乎不起作用,并且输入字段被禁用(不允许我输入)

constructor() {
    super();
    this.state = {
        title: '',
        length: '',
        image: '',
        source: '',
        available: '',
        date: '',
        errors: {}
    }
    this.onChange = this.onChange.bind(this);
}

onChange(e) {
    this.setState({ [e.target.name]: e.target.value });
}

<input value={this.state.length} onChange={this.onChange} type="text" 
    className="form-control" name="email" placeholder="e.g. 3:36" />

最佳答案

2 件事:

您的 setState 函数根据事件的目标节点名称更新状态中的值,此处名称(“电子邮件”)与您在状态中获取的值(长度)。

第二个错误是您的 onChange 未绑定(bind)到您的类,调用 this.setState 将返回错误。

您可以通过更改输入中的值变量来解决它:

<input value={this.state.email} onChange={this.onChange} type="text" className="form-control" name="email" placeholder="e.g. 3:36"/>

并将 onChange 转换为箭头函数(或绑定(bind)它):

onChange = e => {
    this.setState({ [e.target.name]: e.target.value });
}

关于javascript - 输入字段的 onChange 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119197/

相关文章:

javascript - 如何删除在 Electron 中从 index.html 到 contact.html 的转换过程中创建的空白页?

reactjs - zsh : command not found: netlify on mac OS

javascript - 是否可以使用 react.js 将 promise 数据值分配给外部变量

javascript - 为什么我不能用 React 更新我的表单字段

java - 从 Tapestry 组件监听 spring 事件

jquery - 使用 Jquery 将多个 DOM 元素附加到一个事件处理程序的最短方法?

javascript - React Child componentDidMount 没有在 Route 上触发

javascript - js中对象到数组的映射

javascript - 在 Electron 应用程序中捕获文件下载事件

jquery - 将一个处理程序绑定(bind)到多个事件