vue form登录需要点击两次问题

问题描述:在做登录页面时,使用Form和submit,和reset,因为可以自动添加回车登录事件和置空功能,很方便。但是也遇到了问题。第一次点击登录按钮时,并没有执行 submit的click事件,而是在地址栏中添加了一个问号,并且刷新页面。第二次点击登录时才执行click。

可能原因:form中的submit带有默认的提交和跳转动作,在点击submit时,执行的时默认的提交和跳转

解决方案:给submit添加@click.prevent="clickHanlder",问题解决


<form action="" class="loginForm" v-if="!isShow">
      <p>用户名
        <input type="text" class="loginImput" required v-model="loginName">
        <el-checkbox style="color: white" :checked="rememberSelected" v-model="rememberSelected" >记住用户名</el-checkbox>
      </p></br>
      <p>密   码
        <input type="password" class="loginImput" v-model="identify" required>
        <label class="error" v-show="!success" v-text="errorMsg"></label>
      </p></br>

      <input type="submit" class="loginBtn" value="" @click.prevent="login()"/>
      <input type="reset" class="emptyBtn" value=""/>
      </p>
    </form>

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
在 Ant Design Vue 中,Form 组件是一个非常实用的表单组件,但是有时候我们需要Form 进行二次封装来满足特定的业务求。 下面是一个简单的 Form 二次封装示例: ```vue <template> <a-form :form="form"> <slot></slot> <a-form-item> <a-button type="primary" @click="submitForm">提交</a-button> <a-button style="margin-left: 8px" @click="resetForm">重置</a-button> </a-form-item> </a-form> </template> <script> import { Form, Button } from 'ant-design-vue'; export default { name: 'MyForm', components: { 'a-form': Form, 'a-form-item': Form.Item, 'a-button': Button, }, props: { initialValues: { type: Object, default: () => ({}), }, }, data() { return { form: this.$form.createForm(this), }; }, methods: { submitForm() { this.form.validateFields((err, values) => { if (!err) { this.$emit('submit', values); } }); }, resetForm() { this.form.resetFields(); }, }, }; </script> ``` 在这个示例中,我们通过使用 `<slot>` 来使得 MyForm 组件可以接受任意的表单项,同时在底部添加了提交和重置按钮。在代码中,我们使用了 Ant Design Vue 中的 FormFormItem 和 Button 组件,并通过 `$form.createForm(this)` 创建了一个表单实例,然后在 `submitForm` 和 `resetForm` 方法中分别对表单进行了提交和重置操作。 使用该组件时,我们可以这样写: ```vue <template> <my-form @submit="handleSubmit"> <a-form-item label="用户名" :label-col="{ span: 4 }" :wrapper-col="{ span: 8 }"> <a-input v-decorator="['username']" /> </a-form-item> <a-form-item label="密码" :label-col="{ span: 4 }" :wrapper-col="{ span: 8 }"> <a-input type="password" v-decorator="['password']" /> </a-form-item> </my-form> </template> <script> import MyForm from './MyForm.vue'; export default { components: { 'my-form': MyForm, }, methods: { handleSubmit(values) { console.log(values); }, }, }; </script> ``` 在这个示例中,我们将两个输入框放在了 MyForm 组件内部,并通过 `v-decorator` 指令来进行表单项的绑定。当用户点击提交按钮时,MyForm 组件会对表单进行验证,并将验证通过的表单数据通过 `$emit` 事件向外传递。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值