如何使用react.js中的Enter键提交表单?

reactjs React.js

小宇宙前端

2020-03-12

这是我的表单和onClick方法。我想在按下键盘的Enter按钮时执行此方法。怎么样 ?

注意:没有jquery被赞赏。

 comment: function (e) {
        e.preventDefault();
        this.props.comment({comment: this.refs.text.getDOMNode().value, userPostId:this.refs.userPostId.getDOMNode().value})
    },


 <form className="commentForm">
     <textarea rows="2" cols="110" placeholder="****Comment Here****" ref="text"  /><br />
    <input type="text" placeholder="userPostId" ref="userPostId" /> <br />
     <button type="button" className="btn btn-success" onClick={this.comment}>Comment</button>
    </form>

第1221篇《如何使用react.js中的Enter键提交表单?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
JimHarry 2020.03.12

更改<button type="button"<button type="submit"删除onClick相反<form className="commentForm" onSubmit={this.onFormSubmit}>这应该可以单击按钮并按回车键。

onFormSubmit = e => {
  e.preventDefault();
  const { name, email } = this.state;
  // send to server with e.g. `window.fetch`
}

...

<form onSubmit={this.onFormSubmit}>
  ...
  <button type="submit">Submit</button>
</form>
乐米亚 2020.03.12

自上次回答此问题以来已有好几年了。React在2017年推出了“ Hooks”,而“ keyCode”已被弃用。

现在我们可以这样写:

  useEffect(() => {
    const listener = event => {
      if (event.code === "Enter" || event.code === "NumpadEnter") {
        console.log("Enter key was pressed. Run your function.");
        // callMyFunction();
      }
    };
    document.addEventListener("keydown", listener);
    return () => {
      document.removeEventListener("keydown", listener);
    };
  }, []);

keydown首次加载组件时,它将在事件上注册一个侦听器销毁组件后,它将删除事件侦听器。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android