其他

微信小程序 textarea组件 清空的问题

背景


开发微信小程序 textarea组件的时候,希望能有一个清除按钮,清空textarea输入的值,但是发现添加完按钮以后,得连按两次才能清除掉。

 <view class="flex-row-center" style="margin-top: 30rpx;">
        <textarea class="input" value="{{prompt}}" name="prompt" bindblur='bindTextAreaBlur' placeholder="{{placeholder}}" maxlength = "-1"/>
      </view>

      <view class="flex-row" style="margin-top: 12rpx;">
        <image src="../../images/image-clear.png" bindtap='clearPrompt' style="margin-left: 180rpx;width: 45rpx;height: 45rpx;"></image>
      </view>
  clearPrompt: function () {
      this.data.prompt = '';
      this.setData({
        prompt: '',
      });
  },

原因


 由于失去焦点,键盘回落没有及时触发清空,从而发现需要点击两下删除才清空,解决办法就是用定时器延迟触发清空

上面的代码修改为

 clearPrompt: function () {
    var _this = this;
    setTimeout(function () {
      _this.data.prompt = '';
      _this.setData({
        prompt: '',
      });
    }, 100)
  },