在公司管理后台中,搜索页面里的文本框输入搜索内容,使用回车键,会导致页面表单提交刷新当前页面,且当前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>