vue 及 js 微信中 页面输入框被键盘顶上去之后,点击域错误 弹出框fixed absolute 定位的输入框 键盘弹出导致点击域失效 解决办法

本文介绍了一种解决输入框聚焦时页面滚动位置丢失的问题,通过记录并恢复滚动位置,确保用户体验。提供了Vue代码示例,适用于其他框架的实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

造成这种问题的原因是body没有复位,所以把body 复位就可以了。

解决思路:1、input获取焦点的时候记住当前滚动的位置,2、input失去焦点的时候滚动到之前的位置。(亲测有效)。

附vue 代码,其他框架可以依据该思路修改。

PageScroll:0,// 位置  这个在data 里面定义变量
inputLoseBlur() {
 setTimeout(() => {
  window.scrollTo(0, this.PageScroll);
 }, 100);
},
inputLoseFocus() {
 this.PageScroll = this.GetPageScroll()
},
GetPageScroll(){
 var y;
 if (window.pageYOffset) {    // all except IE
  y = window.pageYOffset;
 } else if (document.documentElement && document.documentElement.scrollTop) {    // IE 6 Strict
  y = document.documentElement.scrollTop;
 } else if (document.body) {    // all other IE
  y = document.body.scrollTop;
 }
 return y
},

一共三个方法,第一个是失去焦点的时候滚动到之前位置,第二个是获取焦点的时候将当前位置的数据赋值给变量,第三个是获取当前位置。

<mt-field label="" placeholder="请输入手机号码" @focus.native.capture="inputLoseFocus" @blur.native.capture="inputLoseBlur" type="tel" v-model="loginMsg.mobile"></mt-field>

上面是使用方式。

你可以使用Vue的v-show指令来动态控制聊天键盘的显示和隐藏,同时使用v-model指令来绑定输入框的值。 首先,在你的模板中添加一个输入框和一个按钮,用于触发键盘的显示和隐藏: ```html <template> <div> <div class="chat-box"> <div class="message-list"> // 这里放置聊天记录的代码 </div> <div class="input-box"> <input type="text" v-model="message" @focus="showKeyboard" @blur="hideKeyboard"/> <button @click="sendMessage">发送</button> </div> </div> <div class="keyboard" v-show="isKeyboardVisible"> // 这里放置键盘的代码 </div> </div> </template> ``` 然后,在你的Vue实例中添加showKeyboard和hideKeyboard方法,用于显示和隐藏聊天键盘: ```javascript export default { data() { return { message: '', isKeyboardVisible: false } }, methods: { showKeyboard() { this.isKeyboardVisible = true }, hideKeyboard() { this.isKeyboardVisible = false }, sendMessage() { // 这里是发送消息的代码 } } } ``` 最后,在你的模板中使用v-show指令来根据isKeyboardVisible变量的值来动态控制聊天键盘的显示和隐藏: ```html <template> <div> <div class="chat-box"> <div class="message-list"> // 这里放置聊天记录的代码 </div> <div class="input-box"> <input type="text" v-model="message" @focus="showKeyboard" @blur="hideKeyboard"/> <button @click="sendMessage">发送</button> </div> </div> <div class="keyboard" v-show="isKeyboardVisible"> // 这里放置键盘的代码 </div> </div> </template> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值