先说bug吧:
form 表单如果包含 textarea, 在bindsubmit 里调用订阅消息接口 wx.requestSubscribeMessage 会报错误 requestSubscribeMessage:fail can only be invoked by user TAP gesture.
------------------------------------------------------------------------------------------------------------------------------------------------------
问题是这样的, 一个简单的表单提交, 提交前 wx.requestSubscribeMessage 申请一下订阅消息, 然后接口出错这样:
requestSubscribeMessage:fail can only be invoked by user TAP gesture.
我就纳闷, 表单提交的事件不是基于点击事件? 啊?
代码:
<!--test.wxml-->
<form bindsubmit="handleSubmit">
<textarea></textarea>
<button form-type="submit">submit</button>
</form>
// test.js
handleSubmit(e)
{
console.log("handleSubmit", e);
wx.requestSubscribeMessage({
tmplIds: [
'your template id 0',
'your template id 1',
'your template id 2',
],
success (res)
{
},
fail (err)
{
console.error(err);
}
});
}
搞了半天, 终于让我找到问题的原因: 去掉 textarea 就ok了
我也遇到这个问题,但是我现在把form取消,直接用@click的方式也不行,还是提示这个
而且在微信开发者工具里面可以,在手机上无论是预览还是真机调试都不行,有人知道如何解决吗?
我也遇到这个问题,没有解决办法~怎么破
2, 如果非得用表单, 同时监听button的bindtap事件, 在这里做申请订阅消息. 把表单submit事件的逻辑放在订阅消息处理之后进行. 这个流程可以用promise来实现;
3, 当然还有一种方式, 把订阅和表单提交分开, 就是用户得点两次, 看看你们业务能否接收这么做;
现在这个bug还没解决。。。。
有解决方案么。。。好像不止有textarea不行,连input好像也不行。。。
---------------------------------------------
不是textarea的问题。是不能在form的onSubmit里调用。把button的formType去掉吧,用state记录字段值,然后在button的bindclick是实现submit的代码逻辑即可。!!!!!!
一样遇到了,只有想办法改程序了
还没修复,还有获取用户信息的接口也这样,难道非让用户点击两次?用两个按钮切换?
今日发现现在form里仅放个input,ios端都不弹出了,越来越厉害了
我遇到了跟你一样的问题
搞不懂这么大bug官方居然完全不管。。。
目前我们的业务必须有textarea,暂时先用button的bindtap里调用订阅消息,再提交表单的方式。