信息发布→ 登录 注册 退出

vant组件表单外部的button触发form表单的submit事件问题

发布时间:2026-01-11

点击量:
目录
  • vant组件表单外部的button触发form表单的submit事件
    • 一、给form表单添加ref属性
    • 二、处理外部button
  • vant点击表单中普通按钮为什么会触发表单提交

    vant组件表单外部的button触发form表单的submit事件

    有时候根据需求以及布局需要,button按钮需要放在form外部,但是想触发提交事件的同时又想方便地获取表单的值

    一、给form表单添加ref属性

    <van-form ref="formData" alidate-first @submit="submit">
          <van-field
               readonly
               v-model="name"
               name="name"
               label="姓名"
           />
    </van-form>

    二、处理外部button

    1.给button添加点击事件

    <button type="submit"  @click="send">外部提交</button>

    2.在点击事件内部处理逻辑

    send(){
       this.$refs.formData.submit();
    },

    这里的formData是form表单上的ref属性值

    然后就可以点击button时就会触发表单的submit事件了,以后可以直接在submit事件里面写逻辑

    完整代码附上:

    <template>
        <div class="result">
             <van-form ref="formData" alidate-first @submit="submit">
                 <van-field
                     readonly
                     v-model="name"
                     name="name"
                     label="姓名"
                 />
                 <van-field
                     readonly
                     v-model="idNumber"
                     name="idNum"
                     label="身份证号码"
                 />
                 <van-field
                     readonly
                     v-model="phoneNumber"
                     name="phone"
                     label="手机号"
                 />
             </van-form>
             <button type="submit"  @click="send">外部提交按钮</button>
        </div>
    </template>
    <script>
    export default {
        data(){
            return{
                
            }
        },
        methods:{
            submit(values){
                //提交事件的逻辑
                console.log(values) //values为表单中van-field的值
            },
            send(){
                this.$refs.formData.submit();
            },
        }
    }
    </script>
    <style>
     
    </style>

    vant点击表单中普通按钮为什么会触发表单提交

    在表单中,除了提交按钮外,可能还有一些其他的功能性按钮,如发送验证码按钮。

    在使用这些按钮时,要注意将native-type设置为button,否则会触发表单提交。

    <van-button native-type="button">
      发送验证码
    </van-button>

    这个问题的原因是浏览器中 button 标签 type 属性的默认值为submit,导致触发表单提交。

    我们会在下个大版本中将 type 的默认值调整为button来避免这个问题。 

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!