微信小程序中textarea没有bindchange事件,所以无法在输入时给变量赋值。
虽然可以使用bindblur事件,但是绑定bindblur事件,如果再点击按钮,则先执行完按钮事件后,再去执行bindblur事件,所以在js文件取不到输入值,
解决方法:结合from表单,textarea文本框输入后,再去点击提交按钮,这时会先执行textarea事件(获取文本框输入内容),再去执行数据提交,这样问题就解决了
<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>
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); } }); } })
缺点:
这样操作后,功能就有缺陷。例如,无法即时获取用户文本框输入字符个数,如果有更好的解决方法,希望能学习一下!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。