场景:微信小程序真机中 textarea输入框内有很多文字,从中间删除文字,速度快的时候,光标会从中间跳到最后位置!
原因:input、textarea事件中,给input框绑定任何事件后,在处理事件时更新数据 setData之后就会让光标到最后。说白了就是数据发生更新导致光标跑到最后。
处理办法:
将标签中:value绑定的变量,与bindinput事件里一直改变赋予的值变量分开,用两个变量使用,这样就避免了bindinput触发时不去同时更新输入框中:value绑定的值,这样就不会让光标变到最后。
相关代码详情如下:
<textarea name="bindTextAreaBlur" placeholder-style="color: #888888;line-height: 42rpx;" placeholder="描述你想象的文字" bindinput="getInputWay" show-confirm-bar='true' value="{{edit_text}}" maxlength="-1" show-confirm-bar="" confirm-type="done" ></textarea>
getInputWay: function (e) {let value = e.detail.valuethis.setData({editText: value })},
注意:清除数据时,两个变量都需要清除。