按回车键自动提交表单的问题

举报
孙小北 发表于 2021/11/22 14:39:01 2021/11/22
【摘要】 一次偶然的操作,在编辑页面,发现只要输入内容,按enter键,页面立马就跳转,有点意思。肯定enter键触发了表单提交。在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,所以这个bug也是很有意思的。从网上查找资料,发现很多人遇到了这个有趣的问题。在此整理一下,做个记录,顺便分享一下。出现自动提交的情况,有两种可能...

一次偶然的操作,在编辑页面,发现只要输入内容,按enter键,页面立马就跳转,有点意思。肯定enter键触发了表单提交。

在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,所以这个bug也是很有意思的。从网上查找资料,发现很多人遇到了这个有趣的问题。在此整理一下,做个记录,顺便分享一下。

出现自动提交的情况,有两种可能:
    一 、编写了javascript代码,当用户点按Enter键时,通过js事件侦听机制触发表单的提交。
    二 、浏览器在解析网页的时候,有许多默认的行为,例如如果一个页面上有表单和一个提交按钮,那么打开页面时,焦点会自动落在这个提交按钮上面。同样如果一个表单中只有一个单行文本输入域(text),那么在这个输入域中按Enter键时,浏览器会自动提交该表单。

解决的办法也有多种,整理如下:

方法一:直接对input进行操作,强行将回车键操作去掉:增加 onkeydown='if(event.keyCode==13) return false;'

<label>文档名称:<input name="Name" style="width: 400px;" value="@Model.Name" class="form-control" required onkeydown='if(event.keyCode==13) return false;'/></label>

方法二:直接在form上加上onsubmit="returnfalse;"这段话,它会阻止表单的回车键进行提交。

<form id="editform" method="post" class="form-inline" onsubmit="return false;">

方法三:很多人估计都想到过,就是既然一个input会自动提交,多个input就没问题,那么我给它多加一个input不就行了,有些人试过发现不行,那是为什么呢?因为他是这么写的<input type="hidden">,这样当然不行,一个隐藏域,type并不是text,所以不行。但是,<input type="text"style="display:none;">,使用这种方法就可以了,因为它是用样式隐藏输入框的,实质上还是一个type为text的input。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。