uniapp input输入框直接点击发送按钮后隐藏怎么还显示一个空白是边框,点键盘确认之后再点发送就正常怎办
时间: 2023-11-22 07:51:46 浏览: 81
这个问题可能是由于键盘弹起时导致输入框被顶起,但是键盘隐藏时输入框没有重新布局,导致留下了一个空白的边框。为了解决这个问题,你可以尝试以下几个方法:
1. 使用 `@focus` 和 `@blur` 事件来监听输入框的焦点状态,当输入框失去焦点时重新布局输入框,例如:
```html
<template>
<div>
<textarea ref="input" v-model="message" @focus="onFocus" @blur="onBlur"></textarea>
<button @click="sendMessage">发送</button>
</div>
</template>
<script>
export default {
data() {
return {
message: '',
originalHeight: 0 // 记录输入框的原始高度
}
},
methods: {
onFocus() {
this.originalHeight = this.$refs.input.clientHeight
},
onBlur() {
this.$refs.input.style.height = this.originalHeight + 'px'
},
sendMessage() {
// 发送消息
}
}
}
</script>
<style scoped>
textarea {
box-sizing: border-box;
width: 100%;
border: 1px solid #ccc;
padding: 10px;
font-size: 16px;
line-height: 1.5;
resize: none;
}
</style>
```
2. 使用 `uni.hideKeyboard()` 方法来隐藏键盘,并在隐藏键盘后重新布局输入框,例如:
```html
<template>
<div>
<textarea ref="input" v-model="message" @keydown.enter="onEnter"></textarea>
<button @click="sendMessage">发送</button>
</div>
</template>
<script>
export default {
data() {
return {
message: '',
originalHeight: 0 // 记录输入框的原始高度
}
},
methods: {
onEnter() {
uni.hideKeyboard({
complete: () => {
this.$refs.input.style.height = this.originalHeight + 'px'
}
})
},
sendMessage() {
// 发送消息
}
}
}
</script>
<style scoped>
textarea {
box-sizing: border-box;
width: 100%;
border: 1px solid #ccc;
padding: 10px;
font-size: 16px;
line-height: 1.5;
resize: none;
}
</style>
```
以上两种方法都可以解决输入框隐藏后留下空白边框的问题,你可以根据自己的需求选择其中一种实现方式。
阅读全文