请教个小程序方面的问题,我在开发者工具中用时,input中的值是取的到,为什么在手机上面取值不正常呢,要不取不到值,要不本次还是取的上一次的值,
wxml:
<view class="weui-search-bar" >
<view class="weui-search-bar__form">
<view class="weui-search-bar__box">
<input name="inputdata" class="weui-search-bar__input" placeholder="请输入查询内容" bindblur="iearchInput" />
</view>
</view>
<button class="weui-search-bar__cancel-btn" bindtap="so">
搜索
</button>
</view>
js中:
iearchInput:function(e){
var that=this;
that.data.sdata=e.detail.value;
},
so:function(){
var that = this;
var goodsearch = that.data.sdata;
if (goodsearch==''){
wx.showModal({
title: '错误',
content: that.data.sdata ,
showCancel: false,//是否显示取消按钮
confirmText: '确定',
confirmColor: "red",
success: function (res) {
if (res.confirm) {
}
}
})
return;
}
//跳转商品详情
wx.navigateTo({ url: '../shop/brand/brand?goodsname=' + goodsearch })
},
iearchInput函数中 取到e.detail.value之后 不需要setData一下 下面能取到吗?
实际上与setData无关,问题在手写完一个字后,不会马上触发 bindinput而已,所以按钮绑定的事件就根本得不到值,目前我采用的是bindblur这个方式解决数据处理也在这里面,也就是那个搜索按钮实际上是无效了,
我这样是可以的 input取值没问题
你如果再加个按钮去执行就知道了,你手写录入,马上按钮去执行,就会出现这个情况,这个bindinput的执行实际是在按钮执行之后的,所以按钮中的事件是取不到bindinput赋的值的,但是键盘录入,开发工具都不会有事,我昨晚用真机调试了各种方式得到的结果至少是这样的。
手写输入不正常?
问题在手写完一个字后,不会马上触发 绑定事件而已不象键盘会马上触发,所以按钮绑定的事件就根本得不到值,目前我采用的是bindblur这个方式解决数据处理也在这里面,也就是那个搜索按钮实际上是无效了,
麻烦提供下复现的代码片段:https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
https://developers.weixin.qq.com/s/o1E06GmN7p6i你可以试试手机输入框,手写输入后点击搜索按钮,看能不能取值出来的,我刚试了,如果用点那个输入法的弯了一下的箭头(可能是返回那个吧)是可以取值,简单的说,就是只手写,不点击键盘是取不到值,应该是手写输入是不能触发bindinput之类的事件,这类事件应是键盘事件吧
我这边测试在未失去焦点的时候,点击搜索是有反应的,你的测试机型以及微信版本是?
微信版本是那个另行打补丁的7.0.3,手机用的荣耀7C,反正我手写时,未失去焦点,哪怕是失去了焦点,只要不点击输入法键盘,点击搜索是绝对只会执行那个没值的提示,是取不到值的
建议你打印一下日志,看看有没有执行bindblur事件,或者再添加一个bindinput事件
将数据处理写到bindblur事件中,so就写个空的哄哄人,这样就解决了手写输入的问题了,