收藏
回答

获取 input 输入值问题!

问题模块
API和组件

代码如下:

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


最后一次编辑于  2017-11-27  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 李耀峰
    李耀峰
    2017-11-28

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

    2017-11-28
    赞同
    回复
  • 李耀峰
    李耀峰
    2017-11-28

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



    2017-11-28
    赞同
    回复
  • 韬々
    韬々
    2017-11-27

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


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

    2017-11-27
    赞同
    回复 1
    • WXIAN
      WXIAN
      01-16

      为什么做个input 数据绑定还要怎么麻烦?难道不是点击按钮的时候,先要让input 触发bindblur,在触发button本身的事件么?

      01-16
      回复