解决方法:
(不要在textarea和input外面套scroll-view、swiper、movable-view)
创建一个textarea和一个view,默认显示view,点击view后,textarea显示并获取焦点,view隐藏;输入完成后,textarea失去焦点并隐藏,view重新显示。
<view class='box'>
<textarea wx:if="{{isShowRemark}}" class='remark' placeholder='请填写备注信息' value='{{remarkValue}}'
bindinput='changeValue' focus='{{isGetFocus}}' bindblur='blurFocus'></textarea>
<view wx:else class='remark sizing noType' bindtap='getFocus'>{{remarkValue?remarkValue:"请填写备注信息"}}</view>
</view>
blurFocus() {
this.setData({
isShowRemark: false
})
},
getFocus() {
this.setData({
isGetFocus: true,
isShowRemark: false
})
},
changeValue(e) {
this.setData({
remarkValue: e.detail.value
})
},
原生组件
小程序中的部分组件是由客户端创建的原生组件,原生组件脱离在 WebView 渲染流程外,这些组件有:camera、canvas、input(仅在focus时表现为原生组件)、live-player、live-pusher、map、textarea、video。
原生组件的限制
- 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上(后插入的原生组件可以覆盖之前的原生组件,可通过z-index调整原生组件之间的层级)。
- 基础库 2.4.4 以下版本,原生组件不支持在 scroll-view、swiper、movable-view中使用(如果外部有这些做父布局,解决办法将失效)。
- 无法对原生组件设置 CSS 动画,无法定义原生组件为 position: fixed,不能在父级节点使用 overflow: hidden 来裁剪原生组件的显示区域