代码如下:
view:
<input placeholder="" id="zjhm" value='' bindinput="bindzjhm" bindblur="bindzjhm"/>
<text>{{zjhm}}</text>
<text>{{zjhm222}}</text>
<button bindtap="clb">点击事件</button>
js:
data: {
zjhm : 'zheli',
zjhm222:'22222'
},
bindzjhm :function(e){
this.setData({
zjhm:e.detail.value
});
},
clb:function(e){
this.setData({
zjhm222: this.data.zjhm
});
}
问题是:
在点击按钮时,无法第一时间获取到input里面的输入内容。
安卓手机输入时的界面如下:
在输入的过程中是无法触发 bindinput 事件的,并且如果这个时候不点击键盘完成,而是点击界面上其它地方,键盘会收掉,输入的内容也进去了input,但是依然没有触发bindinput,不得不再加上 bindblur 再获取下值。但是即使是两个事件都绑定了,在当前界面下直接点击按钮,是有时间延迟的,无法在按钮的点击事件直接获取到 input 的值,点击完成后,blur 的事件才执行完,变量才有值。
这个要怎么办呢?怎么才能如论怎么输入,都能在点击事件里面获取到input的值呢?
网友回复:
你好,这里其实是一个异步执行时序先后的问题。
可以考虑在click回调的时候,检查onblur和bindinput的回调是否已经执行,如果没有,则在onblur和bindinput的回调中,把输入的值作为参数再调用一次click的handler即可
请问怎么检查回调是否执行完呢?在截图上的输入状态下,分别什么时候调用 onblur/bindinput 呢?
使用form的方式的处理的,button 的 tap 不知道怎么弄,忘管理员能解答下。
爱盈利-运营小咖秀(www.aiyingli.com) 始终坚持研究分享移动互联网App运营推广经验、策略、全案、渠道等纯干货知识内容;是广大App运营从业者的知识启蒙、成长指导、进阶学习的集聚平台;
想了解更多移动互联网干货知识,请关注微信公众号运营小咖秀(ID: yunyingshow)