Vue中form表单提交问题

关于input组件回车后,默认提交form表单

出现的问题:

<div class="searchArea">
        <form action="###" class="searchForm">
          <input
            v-model="keyword"
            id="autocomplete"
            class="input-error input-xxlarge"
            @keyup.enter="goSearch"
          />
          <button
            class="sui-btn btn-xlarge btn-danger"
            type="button"
            @click="goSearch"
          >
            搜索
          </button>
        </form>
      </div>

在输入框输入数据敲回车后,触发表单的默认提交,地址栏会根据form的action改变,重新刷新表单。
原因:
官网上的例子如果存在多个表单选项,输入回车后并不会触发submit
,而出现单个input组件的时候,聚焦input后按回车就会触发自动提交。
解决方法:
一,html中的form

 <div class="searchArea">
        <form action="###" class="searchForm">
          <input
            v-model="keyword"
            id="autocomplete"
            class="input-error input-xxlarge"
            @keyup.enter="goSearch"
          />
          <!-- 多加一个input框会阻止form的默认行为,或者在form中阻止默认行为 -->
          <input hidden />
          <button
            class="sui-btn btn-xlarge btn-danger"
            type="button"
            @click="goSearch"
          >
            搜索
          </button>
        </form>
      </div>
 <div class="searchArea">
 		<!--在form中阻止默认行为-->
        <form action="###" class="searchForm" @submit.prevent>
          <input
            v-model="keyword"
            id="autocomplete"
            class="input-error input-xxlarge"
            @keyup.enter="goSearch"
          />
          <button
            class="sui-btn btn-xlarge btn-danger"
            type="button"
            @click="goSearch"
          >
            搜索
          </button>
        </form>
      </div>

二,el-form中的form
在标签上加@submit.native.prevent

参考链接:
//el-form
https://github.com/ElemeFE/element/issues/3625
//form
https://www.cnblogs.com/jiajia-hjj/p/15731493.html
//自定义标签
https://blog.csdn.net/qq_29468573/article/details/80771625?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=2

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 ant-design-vue 提交一个表单,您可以使用 `Form` 组件和 `Form.Item` 组件。以下是一个简单的示例: ```html <template> <a-form ref="form" :model="formData" :rules="formRules" @submit="handleSubmit"> <a-form-item label="Name" :colon="false" prop="name"> <a-input v-model="formData.name" /> </a-form-item> <a-form-item label="Email" :colon="false" prop="email"> <a-input v-model="formData.email" /> </a-form-item> <a-form-item> <a-button type="primary" html-type="submit">Submit</a-button> </a-form-item> </a-form> </template> <script> export default { data() { return { formData: { name: '', email: '', }, formRules: { name: [{ required: true, message: 'Please enter your name', trigger: 'blur' }], email: [ { required: true, message: 'Please enter your email', trigger: 'blur' }, { type: 'email', message: 'Please enter a valid email address', trigger: 'blur' }, ], }, }; }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if (valid) { // Submit the form data console.log(this.formData); } else { console.log('Form validation failed'); return false; } }); }, }, }; </script> ``` 在上面的代码,我们首先创建了一个 `Form` 组件,并将其绑定到 `formData` 数据属性和 `formRules` 数据属性。然后,我们在表单添加了两个 `Form.Item` 组件,分别用于输入名称和电子邮件地址。最后,我们添加了一个提交按钮,并将其绑定到 `handleSubmit` 方法。 在 `handleSubmit` 方法,我们首先使用 `this.$refs.form.validate` 方法验证表单数据。如果表单数据有效,则提交表单数据,否则输出一个错误消息。 请注意,我们在 `a-button` 组件上使用 `html-type="submit"` 属性来指定按钮类型为提交按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值