form表单中回车的怪异行为

背景

今天测试给我提了一个bug, 在只有一个inpu的表单中按回车会触发页面刷新,并且提交事件并没有触发, 因为这个项目刚刚接手, 代码不是我写的, 所以我第一个想到的是原来的开发给form添加了键盘事件, 或者给form添加了submit事件.

解决

经过排查代码后发现, form表单中并没有写特殊的事件, 并且bug呈现页面刷新状态, 所以我推断为没有阻止默认的form提交事件.
给form标签中添加@keypress.enter.prevent.stop.native='()=>false'(有点不太放心, 所以在阻止默认事件之后又return了false), 果然问题得到了解决.
但是又引发了思考, 为什么在只有一个input并且button的type不为submit的时候会触发表单默认提交事件呢?
查阅资料后了解到

  1. 如果表单里有一个type=”submit”的按钮,回车键生效。
  2. 如果表单里只有一个type=”text”的input,不管按钮是什么type,回车键生效。
  3. 如果按钮不是用input,而是用button,并且没有加type,IE下默认为type=button,FX默认为type=submit。
  4. 其他表单元素如textarea、select不影响,radio checkbox不影响触发规则,但本身在FX下会响应回车键,在IE下不响应。
  5. type=”image”的input,效果等同于type=”submit”,不知道为什么会设计这样一种type,不推荐使用,应该用CSS添加背景图合适些

更新, 去网上找了很多地方都没找到上方说法的出处, 看了看有类似文章的博主几乎都是10年前发的博文了, 就没有去打扰人家, 所以只找到一个html标准的介绍
html form标签标准–form隐式提交和提交算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值