elementUI/Plus 输入框按回车刷新页面分析与解决

简介: elementUI/Plus 输入框按回车刷新页面分析与解决

一.如果你是在 ElementUI 或者 elementPlus 框架中使用<el-input>组件,并希望阻止回车键导致的页面刷新,你可以使用Vue的.prevent修饰符来阻止默认的表单提交行为。

 <el-form-item>

   v-model="input" placeholder="请输入内容">

 

在这个例子中,@submit.native.prevent会阻止表单的默认提交行为,从而阻止了按下回车键时的页面刷新。

解决:@submit.native.prevent注解添加到el-form标签上(针对vue2,vue3只需要@submit.prevent)。

.native 表示对一个组件绑定系统原生事件

.prevent 表示阻止默认事件(如form的submit事件默认提交会刷新页面,.prevent修饰符可以阻止该默认事件)

分析原因:

当 el-form 表单内只有一个 el-input 输入框时,且type为text类型时,在输入框内按回车就会触发表单的提交事件。

 

 

 


而当 el-form 表单内有多个 el-input 输入框时,按回车不会执行任何操作。


 
   
 

   
 

二.在【只有一个 el-input 输入框时,且type为text类型】的情况下,其实有三种方法都可以解决按回车刷新页面的问题,亲测有效。

2.1 如果外层的【el-form】用处不大,可以直接去掉,这样就能立马解决该问题
2.2 也可以使用原生的 @submit 事件和 event.preventDefault() 来阻止表单提交。
<template>
  <form @submit="handleSubmit">
    <input type="text">
    <button type="submit">Submit</button>
  </form>
</template>
 
<script>
export default {
  methods: {
    handleSubmit(event) {
      event.preventDefault(); // 阻止表单的默认提交行为
      // 处理表单提交逻辑
    }
  }
}
</script>
2.3 当然,最经典的解决方案还是上面我们讲过的 -- 将 @submit.native.prevent注解添加到el-form标签上
 
<template>
    <el-form @submit.native.prevent>
      <el-form-item>
        <el-input v-model="input" placeholder="请输入内容"></el-input>
      </el-form-item>
    </el-form>
 
</template>

三.如果你希望在Element UI 或 elementPlus 中阻止特定的下的组件在按下回车键时刷新页面,你可以在该组件上添加一个@keydown.enter.prevent事件监听器。

注意:如果你发现@keydown.enter.prevent在Element UI的组件中不起作用,那可能是因为组件内部实际上是一个包装了原生的组件,所以你需要使用.native修饰符来监听原生的keydown事件(再次强调,只针对vue2,vue3相当于内置了.native,不需加.native)

 

 

 

 

   @keydown.enter.native.prevent>

 

在这个例子中,@keydown.enter.native.prevent会阻止第二个组件在按下回车键时的默认行为,从而阻止了页面刷新。注意,这只会影响第二个组件,第一个组件的行为不会受到影响。

四.@keyup.enter 和@keydown.enter键盘事件选择

- @keydown.enter:当用户按下回车键时触发。在按键被按下的那一刻就会触发,而不管是否已经松开。

- @keyup.enter:当用户松开回车键时触发。只有在按键被完全松开后才会触发。

在阻止表单提交的情况下,通常使用@keydown.enter更为有效。

原因:因为浏览器通常在按键按下的时候就开始处理表单提交,而不是在按键松开的时候。所以,当你使用@keyup.enter.native.prevent时,浏览器可能已经开始提交表单,因此无法阻止表单的提交。

而当你使用@keydown.enter.native.prevent时,你是在按键被按下的那一刻阻止了默认的表单提交行为,所以它能够有效地阻止表单的提交。

这就是为什么@keydown.enter.native.prevent能够阻止表单的提交,而@keyup.enter.native.prevent不能。

总结

以上呢,就是【输入框按回车刷新页面】的原因及解决方案,如果对你有帮助,还请 收藏+关注 哦~

相关文章
|
前端开发 API
解决el-table中横向滚动条无法显示的问题
解决el-table中横向滚动条无法显示的问题
4179 0
Element UI - el-scrollbar 如何隐藏横向滚动条?
Element UI - el-scrollbar 如何隐藏横向滚动条?
1085 0
|
数据格式
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
本文介绍了在ElementUI和ElementPlus中使用`el-table`组件实现合并行功能的技巧,包括多列合并和单列合并的方法,并提供了相应的示例代码和运行效果。
10660 46
使用小技巧实现el-table组件的合并行功能,ElementUI和ElementPlus都适用
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
1186 159
|
JavaScript
VUE中el-input阻止冒泡防止触发父级事件
VUE中el-input阻止冒泡防止触发父级事件
722 130
|
JavaScript
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
这篇文章讨论了在Vue 3中使用Element UI的`el-input`组件时,`@keyup.enter="search()"`事件绑定不生效的问题,并提供了通过使用`.native`修饰符来解决这个问题的方法。
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
Element UI 日期选择器el-date-picker禁止选择指定日期(禁止选择过去,禁止选择未来)【含是否包含今天】
Element UI 日期选择器el-date-picker禁止选择指定日期(禁止选择过去,禁止选择未来)【含是否包含今天】
1297 3
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
4100 1
vue3 键盘事件 回车发送消息,ctrl+回车 内容换行
const textarea = textInput.value.textarea; //获取输入框元素
963 3
|
JavaScript 前端开发 数据管理
使用Sortable.js库 实现Vue3 elementPlus 的 el-table 拖拽排序
使用Sortable.js库 实现Vue3 elementPlus 的 el-table 拖拽排序
4713 1