javascript - 通过在反应表单中按 enter 防止用户触发 onSubmit 处理程序
问题描述
我有一个带有 onSubmit 处理程序的简单反应表单。在处理程序内部发出一个发布请求。就像这样
const handleSubmit = async (e) => {
e.preventDefault();
const response = await fetch('...', method post, body ... etc)
setStatus(await response.text())
}
我遇到的问题是我的功能基本上仍然是由输入按钮触发的,所以它发出了一个发布请求。我希望这仅在有人实际单击按钮时发生。我想也许我可以通过过滤事件 keyCode 来做到这一点,但我找不到它。
解决方案
你必须使用onKeyPress
道具,例如:
const handleKeyPress = (event) = {
if (event.which === 13) {
event.preventDefault();
}
},
return (
<form onKeyPress={handleKeyPress}...
)
注意:提交事件是在你使用onSubmit的时候执行的(当onSubmit也被执行的时候),所以到时候阻止默认动作已经来不及了。
推荐阅读
- c++ - 派生类的构造函数调用的函数在基类中不应该是纯虚函数
- python-3.x - sudo:pip3:找不到命令-在centos 7中
- azure - Azure CosmosDB 数据触发器未进行实际更新
- c# - 巨大的 if else 语句的替代方案
- php - phpSpreadSheet 库在上传到服务器时出错
- c - Ubuntu第一次编译内核模块
- c# - 实体框架Core设置唯一的一对一关系
- java - 片段布局中的滚动视图问题
- c# - 如何使用 Retrofit 将字节数组从 Web api 发送到 android 客户端
- linux - RedHat Linux 8 中的 openssl 证书验证失败