收藏
回答

【转】微信小程序 textarea 简易解决方案




微信小程序中textarea没有bindchange事件,所以无法在输入时给变量赋值。

虽然可以使用bindblur事件,但是绑定bindblur事件,如果再点击按钮,则先执行完按钮事件后,再去执行bindblur事件,所以在js文件取不到输入值,

解决方法:结合from表单,textarea文本框输入后,再去点击提交按钮,这时会先执行textarea事件(获取文本框输入内容),再去执行数据提交,这样问题就解决了

wxml文件代码:

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

js文件代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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);
           }
   });
 }
})

缺点:

这样操作后,功能就有缺陷。例如,无法即时获取用户文本框输入字符个数,如果有更好的解决方法,希望能学习一下!



                                                                                                      作者:天下雪     出自:http://www.wxapp-union.com/portal.php?mod=view&aid=581

最后一次编辑于  2016-12-02
回答关注问题邀请回答
收藏

1 个回答

  • 沧澜
    沧澜
    2016-12-14

    使用form表单解决;

    <form bindsubmit="formSubmit">
           <textarea name="input" class="edit-input" auto-focus="true" focus="true" maxlength="50" type="text" value="{{value}}" placeholder="{{textPlaceholder}}" />
           <button formType="submit" size="default" type="primary" bindtap="submit">确定</button >
       </form>

    然后再js里:

    submit: function () {
        // 先于执行formSubmit 执行
        wx.hideKeyboard();
      },
      formSubmit: function (e) {
        // textarea 的值  e.detail.value.input;
        wx.navigateBack();
      },

    form中绑定一个提交按钮,然后再对应的方法里面可以拿到里面的所有数据

    2016-12-14
    有用
    回复
登录 后发表内容