input里按回车键会刷新页面 怎么办

简介: input里按回车键会刷新页面 怎么办

input里按回车键会刷新页面 怎么办


表象:input里回车键会刷新页面

本质:触发了form表单的submit事件

两种情况:input输入框里按回车键触发submit

  1. form表单里,button,input输入框,框内按回车会触发submit
  2. form表单里,button,但是只有一个input输入框,框内按回车会触发submit,(其他非input的表单元素可有可无)。
<!-- 情况1: -->
  <form action="">
    <!-- 有输入框就行,几个无所谓 -->
    <input type="text">
    <input type="text">
    <!-- 有没有其他非input输入框的元素都无所谓 -->
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <button>sss</button>
  </form>
<!-- 情况2: -->
  <form action="">
    <!-- 只有一个输入框 -->
    <input type="text">
    <!-- 有没有其他非input输入框的元素都无所谓 -->
    <textarea name="" id="" cols="30" rows="10"></textarea>
  </form>

解决方案1:去掉form标签

毕竟本质是触发了form的submit事件,那去掉肯定解决问题,但不一定适合去掉。

解决方案2:监听submit,阻止默认行为

监听submit,阻止默认行为

<form onsubmit="event.preventDefault()">
<!-- js也行 -->
<script>
  document.querySelector('form').addEventListener('submit',function(e){
    e.preventDefault()
  })
</script>

解决方案3:input上监测回车事件

每个input里监听回车事件:

<input type="text" name="aa" onkeypress="if(event.keyCode == 13){event.preventDefault()}">
<!-- return false也行 -->
<!-- <input type="text" name="aa" onkeypress="if(event.keyCode == 13){return false}"> -->
<!-- js也行 -->
<script>
  document.querySelector('form input').addEventListener('keypress',function(e){
    if(event.keyCode == 13) {e.preventDefault()}
  })
</script>

解决方案4:添加一个隐藏的input(无button的情况下)

无button的情况下,增加一个隐藏的input

<form action="">
    <!-- 只有一个输入框 -->
    <input type="text">
    <!-- 加个隐藏的 -->
    <input type="text" hidden>
    <!-- 有没有其他非input输入框的元素都无所谓 -->
    <textarea name="" id="" cols="30" rows="10"></textarea>
  </form>

element-ui会遇到同样的问题

el-form/el-input/el-button背后是原生的form/input/button,所以会同样遇到上述问题。

解决方法也类似:

  • 去掉el-form表单
  • <el-form @submit.native.prevent>
  • 无button的情况下,增加 hidden类型的input
  • 监听input的keypress,不过稍微复杂了点,不写了

引用

目录
相关文章
|
网络协议 Python
python中socket模块的导入和使用基础
【4月更文挑战第3天】Python的`socket`模块是网络编程的基础,用于创建套接字、绑定地址和端口、监听连接及数据传输。首先,使用`import socket`导入模块。接着,通过`socket.socket()`创建套接字,指定地址族(如`AF_INET`)和类型(如`SOCK_STREAM`)。然后,使用`bind()`方法绑定地址和端口,`listen()`方法监听连接。服务器端通过`accept()`接受连接,`recv()`接收数据,`send()`发送响应。客户端则用`connect()`连接服务器,`send()`发送数据,`recv()`接收响应。
|
JavaScript 内存技术
node与npm版本对应关系以及使用nvm管理node版本
node与npm版本对应关系以及使用nvm管理node版本
8523 0
|
JavaScript
elementUI/Plus 输入框按回车刷新页面分析与解决
elementUI/Plus 输入框按回车刷新页面分析与解决
elementUI/Plus 输入框按回车刷新页面分析与解决
|
6月前
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
538 0
|
前端开发 JavaScript
如何让input框在用户输入后,文字居中显示
如何让input框在用户输入后,文字居中显示
867 0
|
前端开发 开发者 容器
彻底学会CSS 弹性布局flex
【4月更文挑战第1天】 彻底学会CSS 弹性布局flex
316 0
|
安全 网络安全 数据安全/隐私保护
轻松部署SFTP并解决连接未设置密钥的报错
尊敬的读者们,大家好!SFTP是一种基于SSH的加密文件传输协议,可确保您的数据在传输过程中得到保护,是一种可信赖的文件传输解决方案。在实际生产环境中,连接第三方SFTP服务器是许多企业进行文件传输的常见需求。然而,有时候当第三方SFTP服务器切换节点后,我们的服务连接却会出现失败的情况。我们今天就遇到了这种情况,第三方服务因国产化需求切换到了新的节点,导致我们的服务连接sftp服务器失败。在本文中,我将与您分享这个问题的原因以及解决方法以及如何使用Docker Compose快速部署SFTP(Secure File Transfer Protocol)服务,帮助您轻松应对类似的挑战。
650 0
轻松部署SFTP并解决连接未设置密钥的报错
|
前端开发 容器
CSS Flexbox(弹性布局)
CSS Flexbox(弹性布局)
758 2
|
Kubernetes 负载均衡 应用服务中间件
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix
使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix
449 0
|
JavaScript API
vue3父子组件相互调用方法详解
vue3父子组件相互调用方法详解