微信小程序输入大段文字,需要使用textarea组件,但是原生组件层级最高,导致有弹窗等组件时候,点击弹窗的界面,会出现textarea拿到点击事件,显示光标。
1.微信官方网站推荐,使用cover-view组件包含button,当时如果有text等组件,则编译会提示异常,cover-view只支持几种控件。在模拟器上面,已经可以实现不被textarea控件拿到,但是到真机预览,还是不行,需要加上z-index为级别最高。
.cover{
z-index: 999;
}
2.因为我是做聊天页面时候,出现这个问题,聊天界面弹窗其他选择窗口时候,没法每个都注意哪个控件会滑动textarea上面点击,所以想到一个折中方法,就是有弹窗出现时候,把textarea设置为hidden:true,弹窗关闭时候,设置为hidden:false,
<textarea id="textmsg" hidden="{{textareaHidden}}" class="chat-input" auto-height="{{inputAutoH}}" style="height:{{inputHeight}}rpx" bindlinechange="bindInputChange" bindinput="bindInput" value="{{inputMsg}}" contenteditable="true" maxlength="140" cursor-spacing="10"></textarea>
然后弹窗设置监听函数,监听关闭事件,
component.closeCallback({
close: (res) => {
that.setData({
textareaHidden: res
})
}
})
组件里面,点击关闭事件实现监听函数
var closeCallback = null
/**
* 设置关闭按钮监听
*/
closeCallback(data) {
closeCallback = data
},
/**
* 关闭按钮
*/
onCloseClick: function() {
console.log("closeCallback=" + closeCallback)
this.setData({
visible: false
})
if (closeCallback) {
closeCallback.close(false)
}
}