微信小程序 textarea 簡易解決方案

微信小程序中textarea沒有bindchange事件,因此沒法在輸入時給變量賦值。javascript

雖然可使用bindblur事件,可是綁定bindblur事件,若是再點擊按鈕,則先執行完按鈕事件後,再去執行bindblur事件,因此在js文件取不到輸入值,java

解決方法:結合from表單,textarea文本框輸入後,再去點擊提交按鈕,這時會先執行textarea事件(獲取文本框輸入內容),再去執行數據提交,這樣問題就解決了小程序

wxml文件代碼:微信小程序

<form bindsubmit="evaSubmit">
      <textarea name="evaContent" maxlength="500" value="{{evaContent}}" class="weui-textarea" placeholder="填寫內容(12-500字)"bindblur="charChange" />          
      <button formType="submit" disabled="{{subdisabled}}" class="weui-btn mini-btn" type="primary" size="mini">提交</button>
 </form>

js文件代碼:微信

var app = getApp();
Page({
  data:{
     evaContent   : ''
  },
  onLoad:function(){
  },
  onReady:function(){
    // 頁面渲染完成
  },
  onShow:function(){
    // 頁面顯示
  },
  onHide:function(){
    // 頁面隱藏
  },
  onUnload:function(){
    // 頁面關閉
  },
  //事件
  textBlur: function(e){
     if(e.detail&&e.detail.value.length>0){
       if(e.detail.value.length<12||e.detail.value.length>500){
          //app.func.showToast('內容爲12-500個字符','loading',1200);
       }else{
          this.setData({
             evaContent : e.detail.value
          });
       }
     }else{
        this.setData({
           evaContent : ''
        });
        evaData.evaContent = '';
        app.func.showToast('請輸入投訴內容','loading',1200);
     }
  },
  //提交事件
  evaSubmit:function(eee){    
    var that = this;
    //提交(自定義的get方法)
    app.func.req('http://localhost:1111/ffeva/complaint?content=''+this.data.evaContent),get,function(res){
            console.log(res);
            if(res.result==='1'){
              //跳轉到首頁
              app.func.showToast('提交成功','loading',1200);
            }else{
              app.func.showToast('提交失敗','loading',1200);
            }
    });
  }
})

 缺點:app

這樣操做後,功能就有缺陷。例如,沒法即時獲取用戶文本框輸入字符個數,若是有更好的解決方法,但願能學習一下!ide

相關文章
相關標籤/搜索