做小程序的时候,产品提出模板消息推送用服务通知的方式推送(正常情况是用公众号推送),然后去查小程序手册,发现服务通知存在着问题:(7天有效期)支付等方式只可以获取3个formID,推送3条模板消息,表单提交方式一次提交只能获取一个formIdm推送一条通知。产品要求一次生成50个formId,以在7天内有50个formI的可以用来推送消息。这就有一个问题,如何在点击推送的时候提交50次form表单呢?试了很多方法:刚开始的时候,思维只局限在了通过for循环的方式去动态调用formsubmit方法来提交表单,可是发现由于formId的获取方式是由当前表单的submit按钮提交方法中,event对象自动生成的,如果循环调用,循环的当前方法的event对象并没有变化,仍然是第一次触发的那个提交方法的event对象,故结果就是你仅仅只是循环生成了多个一样的formId。达不到要求,那么如何在点击推送的时候同时提交多个form表单呢?又试了试在页面上同时动态生成多个表单的方式,发现小程序无法像jq一样append节点...,那么好吧,我又试了同时在页面上复制5个表单,提交方法都一样或不一样(方法名称遵循一定的规律,以后面动态调用),发现提交方法名相同的时候,仍然只提交了一次;换成不同的方法名后(如方法名字符后面按顺序拼接序号),发现没办法调用...(没办法的情况下,已经忽略了可行性,这种明显坑自己的方式都敢来试),后来找到一个前辈的文章:传送

才发现了原来要同时提交多个form表单,以获取多个不同的formId来发送多个消息模板通知原来还能通过另一种方式来实现:简单来说,就是运用css样式重叠,让页面上的多个不同的form表单通过一次触发,点击事件穿透,来实现触发多个表单的方式。
页面上具体css效果就不贴了,直接上效果截图:


这个订阅按钮下面其实有50个表单的嵌套,可以看一下wxml的截图的冰山一角:


即wxml的结构要遵循多个表单一层一层往内嵌套,以实现点击事件穿透(冒泡)的结果。
css样式(其中对button样式的处理和前辈的样式有区别——这说明具体的样式是有差异的):

.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方法在前辈链接中有,就不贴上了。

这篇文章是作为本人遇到这个坑的一个反映与记录。花点时间记录分享出来,只希望能对友需要的朋友提供参考与帮助。同时感谢那位前辈的骚思路,真的学到了骚操作!

微信小程序如何突破模板消息限制,获取多个formId?相关推荐

  1. TP5之微信小程序推送模板消息

    TP5之微信小程序推送模板消息 1.获取formId并且存储起来,获取formId方法见: https://blog.csdn.net/u010481239/article/details/78239 ...

  2. 微信小程序js发送模板消息

    微信小程序的Java的的后台获取的的的access_token存储数据库并接通本更新https://blog.csdn.net/weixin_41716049/article/details/8406 ...

  3. PHP小程序接口的模板消息,微信小程序PHP 发送模板消息通知

    注意: 首先,模板消息接口需写在后台服务器上.[追加!目前微信小程序  模板消息只能本人触发并发给本人.] 2018.4.9修改 :1次提交表单可下发1条,多次提交下发条数独立,相互不影响: 1次支付 ...

  4. 微信小程序系列--之模板消息错误提示: errcode: 41028, errmsg: invalid form id hint:如何解决...

    本人从事互联网项目java开发五年,会java,,python,nodejs,前端,爬虫等技术,对发*项目,营销活动,微信业务(公共号,支付,小程序,第三开放平台)很精通.本人也正在努力去实现一套微信 ...

  5. 微信小程序之发送模板消息(通过openid推送消息给用户)

    一.获取access_token  access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_token失效.(注:不建议每次调用需要acce ...

  6. 微信小程序之发送通知消息(通过openid推送消息给用户)

    微信小程序之发送通知消息(通过openid推送消息给用户) 一.获取access_token access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的ac ...

  7. php一对多聊天程序代码,微信小程序实现一对多发消息

    微信小程序中实现一对多发消息详解及实例代码 微信小程序中各个界面之间的传值和通知比较蛋疼.所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心. 通知中心可以做到:1对多发消息,传递ob ...

  8. 微信小程序数据绑定与模板语法

    微信小程序数据与模板配置 总述: 对应的语法格式与vue的语法格式类似 wxml数据绑定 WXML 模板语法 - 数据绑定.数据绑定的基本原则 在 data 中定义数据 在 WXML 中使用数据 在 ...

  9. 32套企业店铺展示微信小程序源码模板集合

    32套企业店铺展示微信小程序源码模板集合,前端小程序模板,有门锁.水果.母婴等行业 源码优势 此版本微信小程序为开发版,没有错误,上传就可以用.(无后台!不用后台服务器!) 如果你不想那么麻烦,就想展 ...

最新文章

  1. eeglab中文教程系列 汇总
  2. 5地图组件 uni_uni-app学习笔记(一)-- uni-app简介
  3. 数组的相关操作2——筛选数组
  4. 为什么nodejs是单进程的_Nodejs·进程
  5. linux mount挂载命令(将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来)
  6. UE3 移动设备分析
  7. 台前与幕后的 5G 战争
  8. 难于传播的正能量,来点干货
  9. 何宾 单片机原理及应用_单片机原理及应用课后答案讲解
  10. UE4 如何导入外部插件包
  11. w7 internet信息服务器,Win7安装IIS Internet信息服务步骤
  12. Matlab程序控制示波器,基于MATLAB的虚拟示波器设计.PDF
  13. 【技法操作】UI界面设计,用PS绘制录音页面教程
  14. FCC 中级算法题 罗马数字转换器
  15. AR互动大屏丨Add_自动循环动画、遮挡效果的实现
  16. centos8上实现私有CA和证书申请颁发
  17. C++ pair 和make_pair
  18. wifi理论数据速率计算
  19. 小白C语言编程实战(19):质因数分解
  20. STM32F103驱动HCSR04超声波测距显示

热门文章

  1. windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
  2. dfs dtft dft fft
  3. java web接收tcp_Java多线程实现TCP网络Socket编程(C/S通信)
  4. mysql 配置root密码_Mysql安装与配置调优及修改root密码的方法
  5. c语言单片机常用函数,C51单片机C语言函数编辑 -单片机-电子工程世界网
  6. Vue 动画 过渡的类名
  7. 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥
  8. tkinter 中给某个文本加上滚动条_Python Tkinter自制文本编辑器
  9. squid端口转发_Squid服务器三种代理方式详解
  10. linux安装mysql5.7.24_下载安装 Ubuntu 19.04 “Disco Dingo” | Linux 中国