收藏
回答

textarea,失焦,找不到confirm事件处理方法之类的一堆问题

框架类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 textarea 客户端 iOS 6.6.3 1.9.91

textarea的问题让人想骂娘,代码中的注释部分反映了大头处理这些问题的尝试,有些有用,有些没用。最后总地来说还是没用,从昨天晚上折腾到今天早上。

css类fxa-top的persition是fixed,所以一开始textarea的fixed = 'true'。这个时候输入一个字符键盘会消失,然后又会回来。这时page中有storePlan方法,该方法中的setData工作正常,但是app.store()没用(写在app里的方法,代替wx.setStorageSyn()在其它地方表现良好,有全局变量 var app = getApp())。错误提示:cannot read property data of undefined。这是我目前遇到的最好结果。

然后为了解决这个问题,大头开始想办法。先是把textarea放在了一个没有fixed的区域,去掉了fixed属性。结果一字失焦问题来了。失去焦点后由于触发blur事件,这一块儿就消失了。去掉bindinput这个问题消失,但是计数器就没了。

把storePlan由page的方法改成renewDsc的局部函数。现在触发textarea的confirm事件时,显示如下错误信息:

property is not defined;at pages/detail page renewDsc function

已经饿得不行了,代码格式肯定是没问题的,其它的问题找不动了,大侠们快来帮帮我。我去吃饱了回来看。

<!--view class="fxa-top" style='width:100%' wx:if="{{inputDsc}}"-->
       <view class="weui-cells weui-cells_after-title " wx:if="{{inputDsc}}">
           <view class="weui-cell">
               <view class="weui-cell__bd">
                   <textarea class="weui-textarea" auto-focus='true' placeholder="描述" style="height: 8em" maxlength='200' name='description' value = "{{description}}" bindinput="countWords" bindblur='description' bindconfirm='renewDsc' />
                   <view class="weui-textarea-counter">{{counter}}/200</view>
               </view>
           </view>
       </view>
   <!--/view-->

data: {
    counter: 0,
},
/*storePlan: function () {
    var plan = {}, plans = this.data.plans, index = this.data.index;
    var p = this.data.plans[index];
    //delete p.detail;
    for (property in p) {
        plan[property] = this.data[property];
    }
    plans[index] = plan;
    this.setData({
        plans: plans
    });
    app.store('plans', plans)
},
/**
 * 事件处理函数,监听textarea的blur和view的tap
 */
description: function () {
    var input = !this.data.inputDsc;
    this.setData({
        inputDsc: input,
    })
},
/**
 * 事件处理函数,监听文本域输入事件,统计输入字数。
 */
countwords: function (e) {
    this.setData({
        counter: e.detail.value.length
    })
},
/**
 * 监听理由文本域点击【完成】事件
 */
renewDsc: function (e) {
    var description = e.detail.value;
    var that = this;
    //this.storePlan();
    storePlan();
    this.setData({
        description: description,
        inputDsc: false,
    });
    function storePlan(){
        var plan = {}, plans = that.data.plans, index = that.data.index;
        var p = that.data.plans[index];
        delete p.detail;
        for (property in p) {
            plan[property] = that.data[property];
        }
        plans[index] = plan;
        that.setData({
            plans: plans
        });
        app.store('plans', plans)
    }
},


回答关注问题邀请回答
收藏

2 个回答

  • sugus
    sugus
    2018-11-20

    请问你的问题解决了么?是怎么做到的?

    2018-11-20
    有用
    回复
  • 赵青山
    赵青山
    2018-02-14

    小程序是严格模式,property没有声明,有大头就是好啊

    2018-02-14
    有用
    回复
登录 后发表内容