vant组件表单外部的button触发form表单的submit事件问题
作者:manda Liu
这篇文章主要介绍了vant组件表单外部的button触发form表单的submit事件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
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来避免这个问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。