elementUI中input回车触发页面刷新问题与解决方法

2023-12-08 0 294
目录
  • 前言
  • 解决方法:element也给出了解决方法
  • 注意事项:
  • 总结

前言

今天在做项目的的时候发现创建的el-form表单内单个el-input框输入值后点回车会导致页面刷新的问题,于是好奇心驱使下去查了vue中的form表单内的单input框也会跳转页面也就是页面刷新的问题。查了下

原因:elementUI中的当el-form表单只存在一个el-input框时,会触发表单的默认提交事件,element也给出了解释

:::tip 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内单el-input触发页面刷新

<el-form :model=\”form\” ref=\”form\” label-width=\”200px\” class=\”form\”>
<el-form-item
label=\”姓名\”
prop=\”name\”
>
<el-input v-model.number=\”form.name\”></el-input>
</el-form-item>
<el-form-item>
<el-button type=\”primary\” @click=\”submit(\’form\’)\”>提交</el-button>
<el-button @click=\”reset(\’form\’)\”>重置</el-button>
</el-form-item>
</el-form>

elementUI中input回车触发页面刷新问题与解决方法

解决方法:element也给出了解决方法

如果希望阻止这一默认行为,可以在<el-form>标签上添加@submit.native.prevent。 :::

<el-form
:model=\”form\”
ref=\”form\”
label-width=\”200px\”
class=\”form\”
@submit.native.prevent
>
<el-form-item
label=\”姓名\”
prop=\”name\”
>
<el-input v-model.number=\”form.name\”></el-input>
</el-form-item>
<el-form-item>
<el-button type=\”primary\” @click=\”submit(\’form\’)\”>提交</el-button>
<el-button @click=\”reset(\’form\’)\”>重置</el-button>
</el-form-item>
</el-form>

官方给出的只是阻止了这一默认行为。当需要回车来提交表单时可以通过下面这种操作来进行解决

<el-form
:model=\”form\”
ref=\”form\”
label-width=\”200px\”
class=\”form\”
@submit.native.prevent=\”() => submit(\’form\’)\”
>
<el-form-item
label=\”姓名\”
prop=\”name\”
>
<el-input v-model.number=\”form.name\”></el-input>
</el-form-item>
<el-form-item>
<el-button type=\”primary\” native-type=\”submit\”>提交</el-button>
<el-button @click=\”reset(\’form\’)\”>重置</el-button>
</el-form-item>
</el-form>
//注意事项
el-form 方式 确保使用 @submit.native.prevent 阻止原生事件,执行方法为搜索按钮按click事件
[确保方法调用不丢参数]
搜索按钮 – 确保被包裹在 el-form 中
搜索按钮 – 确保按钮的click事件去除掉
搜索按钮 – 确保增加 native-type=\”submit\” 属性

注意事项:

那elementUI的解决了, 原生的form表单的单input和form包裹el-input回车刷新的问题也一样可以解决

1.在form表单内再增加一个隐藏的input框

①通过hidden定义隐藏的输入字段

<form>
<input type=\”hidden\” value=\”1\”></input>
</form>

②通过css样式进行隐藏

<form>
<input type=\”text\” style=\”display:none\”></input>
</form>

2.去掉输入框的回车事件(根据需求来定,有的需要回车事件提交表单来查询或者执行其他操作则该方法不适用)

<form>
<input type=\”text\” onkeydown=\”ClearSubmit(e)\”></input>
</form>
<script>
function ClearSubmit(e) {
if (e.keyCode == ) {
return false;
}
}
</script>

3.阻止表单默认提交事件(下面例子是以form表单包裹el-input,解决 el-form中el-input回车页面刷新的问题 原生form内的input可用onsubmit句柄返回false来解决)

<form @submit.prevent=\”() => getList()\”>
<el-input V-model=\”inputValue\”>
</el-input>
<el-button type=\”primary\” native-type=\”submit\”> {{\”提交\”}} </el-button>
<el-button @click=\”reset\”>{{ $t(重置\’) }}</el-button>
</form>

结语:给一个elementui的官方解决这个回车刷新页面的方案开源地址吧

地址:https://github.com/ElemeFE/element/blob/a0e82aa8ac58d68e66992a5632b779a901436879/examples/docs/zh-CN/form.md

总结

到此这篇关于elementUI中input回车触发页面刷新问题与解决方法的文章就介绍到这了,更多相关elementUI input触发页面刷新内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • vue在antDesign框架或elementUI框架组件native事件中触发2次问题
  • 解决vue elementUI 使用el-select 时 change事件的触发问题
  • vue+elementui实现点击table中的单元格触发事件–弹框
  • elementUI下拉框实现隐藏时触发相关事件方式

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 JavaScript elementUI中input回车触发页面刷新问题与解决方法 https://www.u-9.cn/biancheng/javascript/128482.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务