微信小程序中textarea没有bindchange事件,所以无法在输入时给变量赋值。
虽然可以使用bindblur事件,但是绑定bindblur事件,如果再点击按钮,则先执行完按钮事件后,再去执行bindblur事件,所以在js文件取不到输入值,
解决方法:结合from表单,textarea文本框输入后,再去点击提交按钮,这时会先执行textarea事件(获取文本框输入内容),再去执行数据提交,这样问题就解决了
wxml文件代码:
-
<font size="3"><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></font>
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);
-
}
-
});
-
}
-
})
缺点:
这样操作后,功能就有缺陷。例如,无法即时获取用户文本框输入字符个数,如果有更好的解决方法,希望能学习一下! |