代码如下:
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的值呢?
使用form的方式的处理的,button 的 tap 不知道怎么弄,忘管理员能解答下。
请问怎么检查回调是否执行完呢?在截图上的输入状态下,分别什么时候调用 onblur\bindinput 呢?
你好,这里其实是一个异步执行时序先后的问题。
可以考虑在click回调的时候,检查onblur和bindinput的回调是否已经执行,如果没有,则在onblur和bindinput的回调中,把输入的值作为参数再调用一次click的handler即可
为什么做个input 数据绑定还要怎么麻烦?难道不是点击按钮的时候,先要让input 触发bindblur,在触发button本身的事件么?