正常来说点击uniapp的input框时默认会弹起键盘。具体input设置属性可以看官方文档:https://uniapp.dcloud.io/component/input?id=input
问题:像微信pyq点击评论区或回复评论键盘跟着弹起
思路:点击其他区域能够唤起input的@focus,使input的focus为true即可
代码实现:
父:(记得先引入子组件)
评论区
methods中:
//键盘弹起
tocommit(x){
//通过commit传给子子告诉子用户点击评论区要评论
this.commit=true;
//这里的dyid是请求接口的时候用来告诉接口评论或回复的是那一条
this.dyid=x;
console.log(this.dyid)
},
//评论
submit(val) {
console.log(val);
if(val!=''){
let data={dynamicId:this.dyid//动态ID}
//接口调用
this.$ajax.post(data).then(res=>{
if(res.data.success){
console.log(res);
//评论完之后再调用一次查看所有评论的接口更新页面评论数据
this.getComment();
}else{
}
})
}else{
this.$util.tips("评论文字不能为空")
}
}
子:
<!-- 评论输入框 -->
<view class="input-box u-f-ac u-f-jsa">
<input type="text" confirm-type="发送" v-model="val" placeholder="说点什么吧" @confirm="send" :focus="commit"/>
<view class="view-btn">
<button type="primary" @tap="send">发送</button>
</view>
</view>
<script>
export default{
data() {
return {
val: ''
}
},
props:['commit'],
methods:{
send(){
this.$emit("submit",this.val)
this.val = '';
}
}
}
</script>
样式部分仅供参考
<style lang="scss" scoped>
.input-box{
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 108rpx;
box-sizing: border-box;
padding: 20rpx;
border-top: 1px solid rgba(204,204,204,.4);
background-color: #fff;
input{
// border-radius: 30rpx;
border: 1px solid #EEEEEE;
background: #EEEEEE;
padding-left: 20rpx;
padding-top: 10rpx;
padding-bottom: 10rpx;
flex: 1;
margin-right:20rpx;
}
.view-btn{
width: 80px;
}
button{
background-color:#FFC000;
font-size: 14px;
}
}
</style>