单个文本框的表单,回车键后刷新页面

392 阅读1分钟

在公司管理后台中,搜索页面里的文本框输入搜索内容,使用回车键,会导致页面表单提交刷新当前页面,且当前url会多了一个问号,这样就导致页面逻辑出现了意外。因为该表单里没有其他按钮的话,会经常让使用者觉得,输入搜索的内容后,按下回车就是开始搜索。

原因:在msdn中有介绍,当一个表单中只有一个文本框的时候,默认回车会导致该表单提交

解决方法:

  • 去掉form标签,只保留文本框
  • 可以在表单,隐藏其他文本框,这样回车键就不会触发默认提交
<input style="dispaly:none">
  • 监听表单事件,可以阻止该表单的默认提交事件
document.querySelector('form').addEventListener('submit',function(e){ e.preventDefault() })
  • 监听当前文本框的回车事件
document.querySelector('form input').addEventListener('keypress',function(e){ if(event.keyCode == 13) {e.preventDefault()} })
  • 如果使用element-ui,可以使用内置表单指令,阻止原生事件
   <el-form @submit.native.prevent>