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,不过稍微复杂了点,不写了

引用

目录
相关文章
|
2天前
input点击后placeholder中的提示消息消失
input点击后placeholder中的提示消息消失
|
6月前
textarea文本框默认显示文本鼠标点击时清空
textarea文本框默认显示文本鼠标点击时清空
|
2天前
|
前端开发 JavaScript
不使用alert弹窗,显示提示信息
不使用alert弹窗,显示提示信息
|
10月前
input中placeholder的鼠标操作事件
input中placeholder的鼠标操作事件
43 0
|
6月前
input输入框
input输入框
|
JavaScript
Vue input输入框回车以后自动刷新页面
Vue input输入框回车以后自动刷新页面
Vue input输入框回车以后自动刷新页面
|
JavaScript
input 每输入一次都会失去焦点需要再次点击才能输入
出现上述问题其实就是遍历的时候key值绑定的不合理
227 0
点击弹窗提示,3秒后关闭窗口并跳转新开窗口
点击弹窗提示,3秒后关闭窗口并跳转新开窗口
98 0
el-input 使用 回车键会刷新页面的问题
el-input 使用 回车键会刷新页面的问题
495 0