uniapp input输入框点键盘确认按钮之后再点发送按钮就正常,直接点击发送按钮后隐藏怎么还显示一个空白是边框
时间: 2023-06-27 12:08:24 浏览: 139
这个问题可能是由于键盘确认按钮触发了输入框的失焦事件,而直接点击发送按钮则没有触发失焦事件导致的。你可以尝试在发送按钮的点击事件中添加一个输入框失焦的操作,比如使用`blur()`方法来手动让输入框失焦,以解决这个问题。另外,如果发送按钮的点击事件会触发页面刷新或跳转,则需要在失焦之前把输入框的值保存下来,否则可能会出现输入框的值丢失的情况。
相关问题
uniapp input输入框直接点击发送按钮后隐藏怎么还显示一个空白是边框,点键盘确认按钮之后再点发送就正常,解决案例
这个问题可能是由于输入框失去焦点后,键盘收起导致的。可以尝试在点击发送按钮时,手动让输入框失去焦点,然后再发送消息。
具体实现方法如下:
1. 在发送按钮的点击事件中,添加以下代码:
```javascript
// 获取输入框元素
const inputEl = uni.$('#input');
// 手动让输入框失去焦点
inputEl.blur();
// 发送消息
sendMessage();
```
2. 在输入框元素中添加一个 id 属性,方便获取元素:
```html
<uni-input id="input" placeholder="请输入消息内容"></uni-input>
```
这样就可以解决在直接点击发送按钮后,输入框边框还显示的问题了。
uniapp input输入框直接点击发送按钮后隐藏怎么还显示一个空白是边框,点键盘确认之后再点发送就正常怎办
这个问题可能是由于键盘弹起时导致输入框被顶起,但是键盘隐藏时输入框没有重新布局,导致留下了一个空白的边框。为了解决这个问题,你可以尝试以下几个方法:
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>
```
以上两种方法都可以解决输入框隐藏后留下空白边框的问题,你可以根据自己的需求选择其中一种实现方式。
阅读全文