微信小程序如何突破模板消息限制,獲取多個formId?

作小程序的時候,產品提出模板消息推送用服務通知的方式推送(正常狀況是用公衆號推送),而後去查小程序手冊,發現服務通知存在着問題:(7天有效期)支付等方式只能夠獲取3個formID,推送3條模板消息,表單提交方式一次提交只能獲取一個formIdm推送一條通知。產品要求一次生成50個formId,以在7天內有50個formI的能夠用來推送消息。這就有一個問題,如何在點擊推送的時候提交50次form表單呢?試了不少方法:剛開始的時候,思惟只侷限在了經過for循環的方式去動態調用formsubmit方法來提交表單,但是發現因爲formId的獲取方式是由當前表單的submit按鈕提交方法中,event對象自動生成的,若是循環調用,循環的當前方法的event對象並無變化,仍然是第一次觸發的那個提交方法的event對象,故結果就是你僅僅只是循環生成了多個同樣的formId。達不到要求,那麼如何在點擊推送的時候同時提交多個form表單呢?又試了試在頁面上同時動態生成多個表單的方式,發現小程序沒法像jq同樣append節點...,那麼好吧,我又試了同時在頁面上覆制5個表單,提交方法都同樣或不同(方法名稱遵循必定的規律,之後面動態調用),發現提交方法名相同的時候,仍然只提交了一次;換成不一樣的方法名後(如方法名字符後面按順序拼接序號),發現沒辦法調用...(沒辦法的狀況下,已經忽略了可行性,這種明顯坑本身的方式都敢來試),後來找到一個前輩的文章:傳送css

才發現了原來要同時提交多個form表單,以獲取多個不一樣的formId來發送多個消息模板通知原來還能經過另外一種方式來實現:簡單來講,就是運用css樣式重疊,讓頁面上的多個不一樣的form表單經過一次觸發,點擊事件穿透,來實現觸發多個表單的方式。
頁面上具體css效果就不貼了,直接上效果截圖:小程序

clipboard.png
這個訂閱按鈕下面其實有50個表單的嵌套,能夠看一下wxml的截圖的冰山一角:app

clipboard.png
即wxml的結構要遵循多個表單一層一層往內嵌套,以實現點擊事件穿透(冒泡)的結果。
css樣式(其中對button樣式的處理和前輩的樣式有區別——這說明具體的樣式是有差別的):spa

.btn{
  width: 1rpx;
  height: 1rpx;
  margin: 0;
  padding: 0;
  /* position: fixed; */
  /* top: 150rpx; */
  border-color:transparent;
  border:none;
  background-color:transparent;
}
.aa{
  height:68rpx;
  width:156rpx;
  position:fixed;
  top: 150rpx;
}
button::after{
  border: none;
}

而後submit方法中一次push如當前表單提交方法的evet的formId,具體的js方法在前輩連接中有,就不貼上了。.net

這篇文章是做爲本人遇到這個坑的一個反映與記錄。花點時間記錄分享出來,只但願能對友須要的朋友提供參考與幫助。同時感謝那位前輩的騷思路,真的學到了騷操做!code

相關文章
相關標籤/搜索