先输入手机号,手机号为正确号码,
<input type="number" bindblur="tel_input" name="username" placeholder="输入手机号" value="{{value1}}" bindinput="registerState1" />
<button class="getMsg" wx:if="{{sendState == -1}}" bindtap="getMsg" disabled="{{code}}">获取验证码</button>
,,采取失去焦点时触发tel_input事件
输入完手机号直接点击获取验证码
tel_input: function (e) {
this.setData({
telNumber: e.detail.value,
})
},
// 获取验证码
getMsg: function () {
// 数据请求时是一个异步操作
var that = this;
if (!that.data.telNumber.match(telReg)) {
wx.showToast({
title: "请输入正确手机号码",
image: "/images/login/error.png"
})
}
结果是,that.data.telNumber为空,再次点击获取验证码却又能得到input里输入的号码,,,记得之前没有这个问题的啊,请问下,这是怎么回事?
对啊,我也意识到了,,,谢谢各位!换别的办法了!已经解决!
那样会先触发 bindtap="getMsg" 后触发 bindblur="tel_input"
对啊
是键盘没收起 直接去点获取验证码么
老兄,我的registerState1是用来做别的处理的,不影响这个,,,这里的问题是getMsg函数里没有拿到失去焦点时的值,我昨天测试都是没问题的,不知道官方那边是不是做了啥!这个是我点击获取验证码时,input已经失去焦点,值也的确有了,就是setData()第一次没拿到值,要再次点击才拿到,意思是我点击之后,input的确失去焦点了,但是点击时没有获取到input失去焦点时setData()改变的值(第一次)!
tel_input 改为registerState1
忘了说,是在真机下测试下出现此问题,在开发者工具是没有问题的,输入正确号码,直接点击获取验证码在getMsg函数里是可以拿到input里的值的。