获取 input 输入值问题!
发布于 5 年前 作者 jieliao 5867 次浏览 来自 问答

代码如下:

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的值呢?

3 回复

请问怎么检查回调是否执行完呢?在截图上的输入状态下,分别什么时候调用 onblur\bindinput 呢?

使用form的方式的处理的,button 的 tap 不知道怎么弄,忘管理员能解答下。

你好,这里其实是一个异步执行时序先后的问题。

可以考虑在click回调的时候,检查onblur和bindinput的回调是否已经执行,如果没有,则在onblur和bindinput的回调中,把输入的值作为参数再调用一次click的handler即可

回到顶部