vant組件表單外部的button觸發(fā)form表單的submit事件問題
vant組件表單外部的button觸發(fā)form表單的submit事件
有時(shí)候根據(jù)需求以及布局需要,button按鈕需要放在form外部,但是想觸發(fā)提交事件的同時(shí)又想方便地獲取表單的值
一、給form表單添加ref屬性
<van-form ref="formData" alidate-first @submit="submit"> ? ? ? <van-field ? ? ? ? ? ?readonly ? ? ? ? ? ?v-model="name" ? ? ? ? ? ?name="name" ? ? ? ? ? ?label="姓名" ? ? ? ?/> </van-form>
二、處理外部button
1.給button添加點(diǎn)擊事件
<button type="submit" ?@click="send">外部提交</button>
2.在點(diǎn)擊事件內(nèi)部處理邏輯
send(){ ? ?this.$refs.formData.submit(); },
這里的formData是form表單上的ref屬性值
然后就可以點(diǎn)擊button時(shí)就會(huì)觸發(fā)表單的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="身份證號(hào)碼" ? ? ? ? ? ? ?/> ? ? ? ? ? ? ?<van-field ? ? ? ? ? ? ? ? ?readonly ? ? ? ? ? ? ? ? ?v-model="phoneNumber" ? ? ? ? ? ? ? ? ?name="phone" ? ? ? ? ? ? ? ? ?label="手機(jī)號(hào)" ? ? ? ? ? ? ?/> ? ? ? ? ?</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點(diǎn)擊表單中普通按鈕為什么會(huì)觸發(fā)表單提交
在表單中,除了提交按鈕外,可能還有一些其他的功能性按鈕,如發(fā)送驗(yàn)證碼按鈕。
在使用這些按鈕時(shí),要注意將native-type設(shè)置為button,否則會(huì)觸發(fā)表單提交。
<van-button native-type="button"> ? 發(fā)送驗(yàn)證碼 </van-button>
這個(gè)問題的原因是瀏覽器中 button 標(biāo)簽 type 屬性的默認(rèn)值為submit,導(dǎo)致觸發(fā)表單提交。
我們會(huì)在下個(gè)大版本中將 type 的默認(rèn)值調(diào)整為button來避免這個(gè)問題。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)按鈕
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)驗(yàn)證碼倒計(jì)時(shí)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08element?ui組件中element.style怎么改詳解
element.style是一種內(nèi)聯(lián)樣式,一般都是代碼里寫死的,下面這篇文章主要給大家介紹了關(guān)于element?ui組件中element.style怎么改的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Vue.js做select下拉列表的實(shí)例(ul-li標(biāo)簽仿select標(biāo)簽)
下面小編就為大家分享一篇Vue.js做select下拉列表的實(shí)例(ul-li標(biāo)簽仿select標(biāo)簽),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03vue子組件封裝彈框只能執(zhí)行一次的mounted問題及解決
這篇文章主要介紹了vue子組件封裝彈框只能執(zhí)行一次的mounted問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03vue使用i18n實(shí)現(xiàn)國際化的方法詳解
這篇文章主要給大家介紹了關(guān)于vue使用i18n如何實(shí)現(xiàn)國際化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09用v-html解決Vue.js渲染中html標(biāo)簽不被解析的問題
這篇文章主要給大家介紹了如何利用v-html解決Vue.js渲染過程中html標(biāo)簽不能被解析,html標(biāo)簽顯示為字符串的問題,文中通過圖文介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12解決cordova+vue 項(xiàng)目打包成APK應(yīng)用遇到的問題
這篇文章主要介紹了解決cordova+vue 項(xiàng)目打包成APK應(yīng)用遇到的問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù)
這篇文章主要介紹了Vue Element前端應(yīng)用開發(fā)之獲取后端數(shù)據(jù),對(duì)vue感興趣的同學(xué),可以參考下2021-05-05