【问题标题】:React onSubmit event not working反应 onSubmit 事件不起作用
【发布时间】:2017-07-28 05:48:13
【问题描述】:

当我在表单上按 Enter 时,它不会触发 onSubmit 事件。没有错误。另一个事件 onBlur 确实调度。 logForm 函数最终将 console.log 所有表单字段的 JSON 字符串,但我还没有做到这一点。我只是想触发表单上的 onSubmit 事件。任何帮助或解释将不胜感激。 代码如下:

import React from 'react'

export default function SignupForm() {
  return (
    <form onSubmit={logForm}>
      <div className="form-group">
        <label>
          Name:
          <input onBlur={logUpdate} className="form-control" 
          type="text" placeholder="Username"/>
        </label>
      </div>
      <div className="form-group">
        <label>
          Email:
          <input onBlur={logUpdate} className="form-control" 
          type="text" placeholder="johndoe@example.com"/>
        </label>
      </div>
      <div className="form-group">
        <label>
          Password:
          <input onBlur={logUpdate} className="form-control" 
          type="password" placeholder="Password"/>
        </label>
      </div>
      <div className="form-group">
        <label>
          Confirm Password:
          <input onBlur={logUpdate} className="form-control" 
          type="password" placeholder="Password"/>
        </label>
      </div>
    </form>
  )
}

function logForm(e) {
  e.preventDefault()
  const formInfo = new FormData(e.target)
  console.log(formInfo)
}

function logUpdate(e) {
  console.log(e.target.value)
}

【问题讨论】:

  • 你的表单没有按钮,所以它不会提交表单
  • 我认为 onSubmit 在您按下“输入”键时有效?
  • 回车键默认不提交。正如@TryingToImprove 所写,尝试在表单底部添加一个按钮,这样也可以解决问题。
  • 感谢您解决了我的问题

标签: javascript reactjs


【解决方案1】:

你可以做的是像这样在你的表单控件上放置一个onKeyPressed 事件

onKeyPress={this.onKeyPressed}

然后有一个函数捕捉onKeyPressed

onKeyPressed: function (e) {
    if (e.key === "Enter") {
        logForm(e);
    }
}

如果您希望 Submit 工作,请在您的 html 部分添加一个按钮:(感谢 @TryingToImprove)

  <div className="form-group">
    <label>
      <button className="btn btn-default" type="submit">submit form</button>
    </label>
  </div>

【讨论】:

  • 感谢您的快速回复!但我必须使用 onSubmit。
  • @Tikkes 当您将评论“在底部包含一个按钮”添加到您的答案时,它将包含此问题的完整解决方案:)
  • 感谢您的信任 :) 但是要使用 type="submit" 而不是 onClick={logForm}&lt;form onSubmit={]&gt; 与 enter-key 一起玩得很好.. :)
  • 感谢@TryingToImprove
猜你喜欢
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
相关资源
最近更新 更多