el-form表单中含有el-input按回车自动刷新如何阻止
场景:
在Vue.js中使用Element UI的el-input组件时,如果按下Enter键导致页面刷新,这通常是因为表单的默认提交行为被触发了。要避免这种情况,你可以在el-input所在的表单上监听键盘事件,并阻止默认行为。
先解释一下时间冒泡
**事件冒泡(Event Bubbling)**是事件处理的一种机制,它描述了事件从最具体的元素(如一个按钮或链接)开始,然后逐级向上转播至不那么具体的节点的过程。
在事件冒泡过程中,当一个事件在一个元素上触发时,该事件会首先在这个元素上触发。如果这个元素的父元素也注册了事件处理器来处理相同的事件,那么这个事件也会在这个父元素上触发。这个过程会一直持续到事件到达文档的根节点为止。
事件冒泡是一个非常有用的概念,因为它允许您在一个较高的层次上处理事件,而不是在每个可能的元素上都设置事件处理器。这样可以减少代码的重复,并且使得事件处理更加模块化和可维护。
然而,有时您可能希望阻止事件冒泡,以便只在特定的元素上处理事件。在JavaScript中,您可以使用event.stopPropagation()方法来实现这一点。这将阻止事件继续向上冒泡到父元素。
原因:
是因为el-form一个比较智能的判断 如果表单上只有一个输入框 则在输入框上按回车 表单就会自动提交 且刷新界面 这个问题还不容易发现
解决办法:
就是 在el-form 上加上@submit.native.prevent 防止事件冒泡
<el-form
ref="formRef"
:model="createForm"
:rules="rules"
label-width="100px" @submit.native.prevent ><el-form-item label="名称" prop="name"><el-inputv-model="createForm.name"placeholder="标签组名称不能超过50字"maxlength="50"show-word-limit/></el-form-item>
</el-form>