Vue+element 回车查询页面刷新

问题描述:

form 表单出查询条件需要实现 input 输入完成后键盘回车查询:@keyup.enter=“handleQuery”,如果 form 里只有一个input,回车没有触发事件,而是刷新页面,放两个input就没问题

问题原因:

W3C 标准中有如下规定:

When there is only one single-line text input field in a form, the user agent should accept Enter in that field as a request to submit the form.

即:当一个 form 元素中只有一个输入框时,在该输入框中按下回车应提交该表单。 如果希望阻止这一默认行为,可以在 < el-form > 上加一个@submit.native.prevent

解决方法:

阻止表单默认提交行为

  • form表单上加一个@submit.native.prevent
  • el-input 增加 @keyup.enter.native

vue2 示例:

<el-form @submit.native.prevent >
  <el-form-item>
    <el-input v-model="num" @keyup.enter.native="handleQuery"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button @click="onCancel()">取消</el-button>
    <el-button type="primary" @click="onNext">确定</el-button>
 </el-form-item>
</el-form>

注意:
.native修饰符在vue3中被弃用
解决方法: < el-form > 添加 @submit.prevent

类似问题 vue项目中 点击提交按钮路由多了个问号

### 如何防止 Element Plus 表单提交时按回车刷新页面 为了阻止表单在按下回车键时触发默认的提交行为并导致页面刷新,在使用 `Element Plus` 的情况下可以采用如下方法: 对于包含单一输入框的情况,可以在 `<el-form>` 组件上监听原生 submit 事件,并调用 JavaScript 中的 preventDefault 方法来取消该事件的默认动作。具体实现方式是在模板内加入属性 `@submit.prevent="handleSearch"`[^4]。 另外一种做法是直接针对输入框组件设置按键抬起处理函数用于捕获 Enter 键被释放时刻发生的事件,即通过添加 `@keyup.enter.native` 属性到 `<el-input>` 上面去定义特定逻辑操作而不是让其作为提交指令传递给整个表单位置[^3]。 下面给出一段基于 Vue.jsElement Plus 实现的例子代码片段展示如何组合运用这些技术手段以达到预期效果: ```vue <template> <div class="example"> <!-- 使用 @submit.prevent 来阻止 form 提交 --> <el-form @submit.prevent="handleSubmit"> <el-input v-model="query" placeholder="请输入查询关键词..." @keyup.enter.native="handleSubmit"></el-input> <el-button type="primary" native-type="submit">搜索</el-button> </el-form> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; const query = ref(''); function handleSubmit() { console.log('正在执行自定义搜索...', query.value); } </script> ``` 此段代码展示了如何利用 `@submit.prevent` 取消表单默认提交行为以及怎样借助于 `@keyup.enter.native` 处理程序捕捉键盘上的 Enter 按下事件从而避免不必要的重载现象发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森海北屿 ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值