如何阻止v-autocomplete组件在按下回车键时刷新页面?
这问题我之前开发Vuetify项目时也碰到过!大概率是你的v-autocomplete组件放在<form>标签内部了——浏览器的默认行为会把输入框里的回车判定为表单提交指令,直接触发页面刷新。给你几个实用的解决办法:
解决方法
方法1:全局拦截表单默认提交(推荐)
如果你的整个表单不需要通过回车来触发提交操作,直接给<form>标签加上@submit.prevent修饰符就能彻底解决问题:
<form @submit.prevent> <v-autocomplete v-model="selectedValue" :items="optionsList" placeholder="请选择..." /> <!-- 其他表单控件 --> </form>
这个方式一劳永逸,能避免所有表单内控件回车触发的意外刷新。
方法2:单独处理v-autocomplete的回车事件
要是你还需要表单里其他控件能正常触发回车提交,那就只针对v-autocomplete做拦截,给它添加@keydown.enter.prevent事件修饰符:
<v-autocomplete v-model="selectedValue" :items="optionsList" placeholder="请选择..." @keydown.enter.prevent />
这样设置后,在这个组件内按回车只会触发它本身的下拉项选中逻辑,不会触发表单提交导致页面刷新,同时不影响其他控件的正常回车行为。
额外排查提示
如果你的v-autocomplete根本没放在<form>里却还是出现刷新问题,那得检查下页面里有没有全局绑定的键盘事件监听,说不定是其他代码拦截了回车事件并触发了刷新操作。
内容的提问来源于stack exchange,提问作者Kirill
相关产品推荐
相关产品推荐

