使用vue+iview Form组件, 按enter键导致页面刷新的解决方案

场景:

在表单中的输入框输入内容后,按下 enter 键,预期结果是触发搜索功能,但是实际上按 enter 键后,整个页面都会刷新。

问题分析:

在只有一个表单的情况下,如果只有一个文本框时,按下回车将会触发表单的提交事件。

解决办法:

在 form 标签中添加 @submit.native.prevent

@submit.native.prevent 表示阻止表单默认提交

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

.prevent 表示提交以后不刷新页面

@keyup.native.enter 回车操作,添加在input标签上

<Form  :model="newForm"  inline :label-width="80" @submit.native.prevent>
    <FormItem label="名称" :label-width="120">
        <Input v-model="newForm.name"  @keyup.enter.native="search"></Input>
    </FormItem>
</Form>
### Vue使用 iView 表单阻止页面默认提交行为的方法 在 Vue 项目中使用 iView 的表单组件时,若需要阻止页面的默认提交行为,可以通过以下方法实现: #### 方法一:使用 `@submit.native.prevent` 通过在 `<Form>` 组件上绑定原生事件修饰符 `@submit.native.prevent`,可以有效阻止浏览器的默认提交行为。此方法适用于包含多个输入框的表单场景[^2]。 ```html <Form @submit.native.prevent> <FormItem> <Input type="text" v-model="formItem.input"></Input> </FormItem> <Button type="primary" html-type="submit">提交</Button> </Form> ``` #### 方法二:结合 `v-on:submit.native` 和 `e.preventDefault()` 如果需要在提交时执行额外逻辑,可以在 `methods` 中定义处理函数,并通过 `e.preventDefault()` 手动阻止默认行为[^1]。 ```html <Form v-on:submit.native="handleSubmit"> <FormItem> <Input type="text" v-model="formItem.input"></Input> </FormItem> <Button type="primary" html-type="submit">提交</Button> </Form> ``` ```javascript methods: { handleSubmit(e) { e.preventDefault(); // 阻止默认提交行为 console.log('表单已提交'); } } ``` #### 方法三:为输入框绑定 `@keydown.native.enter.prevent` 当表单中仅有一个输入框时,按下回车可能会触发默认提交行为。此时可以在 `<Form>` 或 `<Input>` 上绑定 `@keydown.native.enter.prevent` 事件修饰符,阻止回车触发提交[^3]。 ```html <Form @keydown.native.enter.prevent> <FormItem> <Input type="text" v-model="formItem.input"></Input> </FormItem> <Button type="primary" @click="handleSubmit">提交</Button> </Form> ``` #### 方法四:使用 Vue 事件修饰符组合 如果需要同时阻止默认行为和事件冒泡,可以使用 `.stop` 和 `.prevent` 修饰符的组合[^4]。 ```html <Form @submit.native.stop.prevent> <FormItem> <Input type="text" v-model="formItem.input"></Input> </FormItem> <Button type="primary" html-type="submit">提交</Button> </Form> ``` ### 注意事项 - 在 iView 的 `<Form>` 组件中,默认情况下不会自动提交表单,但如果绑定了 `html-type="submit"` 的按钮,则可能触发默认提交行为。 - 使用 `@submit.native.prevent` 是最直接的方式,但如果需要更复杂的逻辑,建议结合 `methods` 定义处理函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值