关于el-form按回车自动刷新页面的问题及解决方案
一、问题背景
在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一个特性。
1、问题描述及触发条件:
当 el-form 中 有且只存在一个input时,在这个input中回车会触发默认提交事件,可能会改变网址,导致在地址中的参数发生改变造成报错。
另:注意是只存在有一个input时,才会触发,其中el-date,el-select底层都是input,存在el-input和el-select、el-date时不会触发,存在el-input、el-checkbox-button时则会触发。
2、原因分析:
Element
表单本身存在的一个Bug,原生form
表单的默认事件就是回车提交,现在原生form
表单不怎么用了。
原生form
中回车弹起就会发生页面跳转来提交表单内容,这也是这个Bug发生的原因,这个默认事件没有去干净。
二、解决方案
1、直接去除掉 form 表单,改用别的输入形式,当然这是最简单粗暴的方法
2、如果一个input会自动提交,那么比较容易想到的是再加一个input
值得注意的是:这里的input不能设置type为hidden,这样也是不生效的,form一样会认为只有一个input。需要设置成 <input type="text" class="form-control" style="display:none">
3、给input加上回车事件直接return false。在input加上οnkeydοwn="if(event.keyCode==13){return false;}
4、直接阻止form表单的提交,在form表单加入οnsubmit="return false;"。
5、在el-form中添加 @submit.native.prevent 阻止表单默认提交事件
// Vue2 + element UI 禁用表单提交
// 在<from> 中添加@submit.native.prevent
<el-form @submit.native.prevent></el-form>
// Vue3 + element Plus 禁用表单提交
// 在<from>中添加@submit.enter.prevent
<el-form @submit.enter.prevent></el-form>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律