微信小程序中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
使用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中绑定一个提交按钮,然后再对应的方法里面可以拿到里面的所有数据