写了一个input组件的测试代码,有些地方不是很懂,求指教?
发布于 7 年前 作者 scao 4326 次浏览 来自 官方Issues
Page({
  changeValue : function(e){
    console.log(e.detail);
    var value = e.detail.value,pos = e.detail.cursor,left;
    //计算光标位置
    if (pos != -1) {
      //光标在中间位置
      left = value.slice(0,pos);
      //修改后光标位置要随之变化
      pos = left.replace(/123/g,'2').length;
    }
    return {
      value : e.detail.value.replace(/123/g,'2'),
      cursor : pos
    }
  
  
  },
     
});
<view class="section">
  <input placeholder="内容中123会被替换成0"  bindinput="changeValue"
         type="number" maxlength="20"/>
</view>

问题1:这段代码作用主要是将输入内容‘123’用‘2’代替,changeValue事件函数里面调用了一个return方法,我想知道return返回的时候是不是有触发渲染的作用,因为我把return注掉,输入123就不再被替换。

问题2:changeValue事件函数里面第一句是打印e.detail,我打印出来是“{value: “1234567”, cursor: 7}”这种,打印内容在后面return处有所照应,我想知道的是通常打印e.detail到底是打印出来什么内容呢,因为这段代码__‘console.log(e.detail);’是第一句,我并不知道会打印什么东西。__

回到顶部