首先,為啥要獲取多個(gè)formId油昂,我就不解釋了革娄,大家都是明白人倾贰。
其次,第一次發(fā)簡書拦惋,有什么潛規(guī)則啥的匆浙,沒有遵守,不要介意架忌,嘿嘿吞彤。
然后,這篇文章是我的原創(chuàng)叹放。饰恕。。
重點(diǎn)井仰,在這里埋嵌,我講一下遇到問題,和解決問題的過程俱恶。
需求:如題雹嗦,其實(shí)是有業(yè)務(wù)需求的,這里不寫太清楚合是,做到這一塊的同學(xué)了罪,自然懂
<form bindsubmit="formSubmit" report-submit="{{true}}">
<button formType="submit" class='btn'>
登錄
</button>
</form>
如同上面的幾行代碼,只要你點(diǎn)擊登錄按鈕聪全,就能提交一次表單泊藕,也能獲取一次formId,但是想要實(shí)現(xiàn)點(diǎn)擊一次提交多次难礼,光靠復(fù)制這幾行代碼娃圆,貌似還不行,無論是縮小按鈕蛾茉,還是一些其他的奇葩方式讼呢,都不行。
這里要說的是一種點(diǎn)擊穿透方式
<form bindsubmit="formSubmit" report-submit="{{true}}">
<button formType="submit" class='btn'>
<view class='aa'>
</view>
</button>
</form>
我在里面寫了一個(gè)view (button里面)
給你們看一下樣式(樣式很重要)
.btn{
width: 20rpx;
height: 20rpx;
margin: 0;
padding: 0;
border-radius: 0;
position: fixed;
background: rgba(0,155,0,0.5);
top: 0;
}
button::after{
border:none;
}
.aa{
width: 200rpx;
height: 200rpx;
background: rgba(0,155,0,0.5);
position:fixed;
top: 0;
}
再看一下js谦炬,順便說一下悦屏,模擬器上看不到實(shí)際的formId,用手機(jī)調(diào)試模式可以看到
formSubmit: function(e) {
if (e.detail.formId != 'the formId is a mock one') {
this.setData({
formIdString: e.detail.formId + "," + this.data.formIdString
})
}
console.log(this.data.formIdString)
},
看到的是這樣吧寺,當(dāng)你點(diǎn)擊綠色的任何區(qū)域都能點(diǎn)擊到按鈕窜管,然后提交表單
然后,騷操作來了稚机。。获搏。
<form bindsubmit="formSubmit" report-submit="{{true}}">
<button formType="submit" class='btn'>
<view class='aa'>
<form bindsubmit="formSubmit" report-submit="{{true}}">
<button formType="submit" class='btn'>
<view class='aa'>
</view>
</button>
</form>
</view>
</button>
</form>
我把整個(gè)的wxml代碼復(fù)制一遍 放到view里面赖条,看起來和之前差不多失乾,其實(shí)是疊起來了
然而 實(shí)際操作的話,點(diǎn)擊綠色部分纬乍,會提交兩次碱茁,點(diǎn)擊紅色部分只會提交一次,這是為啥呢仿贬,先看圖
現(xiàn)在應(yīng)該明白了吧纽竣,個(gè)人感覺圖已經(jīng)解釋一切,如果不懂茧泪,可以發(fā)評論蜓氨。
要更多formId 那么就要更多的復(fù)制和粘貼,如果哪位老鐵队伟,寫了個(gè)簡化寫法記得告訴我穴吹,我暫時(shí)還沒有想到好的辦法。
然后嗜侮,這篇文章是我的原創(chuàng)港令。。锈颗。 下次還有新鮮的想法顷霹,還會和大家交流。