移动端禁止手机自带键盘弹出

本文介绍了一种简单有效的方法来防止在移动端点击输入框时键盘自动弹出的问题,通过使用JavaScript代码阻止焦点获取,避免键盘遮挡页面内容。

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

 

这个问题,确实困扰了我好久,但是今天解决了。在网上搜索答案,全都是用DIV模拟input框实现,没有一个真正解决这个问题的,现在我只需要一句代码就可以完完整整的解决这个问题。


先看下问题吧:

这个是我自制的一个日历,在没有选择日期前她是这个样子的,感觉还可以吧

这里写图片描述

但是好景不长,当我将手放进选择框选日期的时候,手机自带的键盘就弹出来了,完全盖住的页面,好心塞,有么有?

这里写图片描述


解决方案:

HTML代码

    <div class="calendar">
        <div>
            <input type="text" id="datePicker" class="date_picker" placeholder="点击选择入住日期"/>
        </div>
        <div>
            <input type="text" id="datePicker2" class="date_picker" placeholder="点击选择离开日期"/>
        </div>
    </div>

JS代码

$("#datePicker").focus(function(){
        document.activeElement.blur();
    });
$("#datePicker2").focus(function(){
        document.activeElement.blur();
    });接下来见证奇迹的时刻到了,手机自带的键盘,奇迹就不见了。 

看下面效果图,6不6,你就说!什么div模拟input方法,你试试就知道………….我就只呵呵了……

这里写图片描述

转载地址:https://blog.youkuaiyun.com/qq_24147051/article/details/52958610

移动端使用 Vue3 开发过程中,有时会遇到输入框(比如 `v-model` 绑定的 `<input>` 或者第三方库的文本组件)当焦点获取到时,虚拟键盘弹出但是不会自动收起的问题。这通常是由于浏览器的行为或者是某些 CSS 的影响。 解决这个问题的方法有: 1. **手动处理**: 使用 JavaScript 监听输入框的 `focus` 和 `blur` 事件,当失去焦点时主动调用键盘隐藏的 API,如在 iOS 中可以尝试 `document.activeElement.blur()`。在 Vue 中,你可以这样做: ```javascript <template> <div> <input ref="inputField" v-model="value" /> </div> </template> <script> export default { data() { return { value: '', }; }, mounted() { this.$refs.inputField.addEventListener('focus', () => { // 当聚焦时,开始监听键盘收起 document.body.addEventListener('touchmove', this.handleBodyMove); }); this.$refs.inputField.addEventListener('blur', () => { // 当失焦时,移除键盘收起的监听并隐藏键盘 document.body.removeEventListener('touchmove', this.handleBodyMove); this.hideKeyboard(); }); }, methods: { hideKeyboard() { if (window.navigator.userAgent.match(/(iPhone|iPod|iPad)/)) { const keyboardHeight = window.innerHeight - document.documentElement.clientHeight; if (keyboardHeight > 0) { window.scrollTo(0, -keyboardHeight); } } else { // 可能需要针对其他平台做适配 } }, handleBodyMove(e) { e.preventDefault(); // 阻止默认的滚动行为 }, }, }; </script> ``` 2. **使用第三方库**: 如果你在项目中使用了像 Element UI、Vuetify 等库,它们通常提供了一些内置的方法来处理键盘问题。 **相关问题--:** 1. 是否可以使用 Vue 自带的生命周期钩子解决此问题? 2. 除了 touchmove,还有哪些事件可用于检测键盘状态? 3. 这种解决方案是否会影响页面的性能?
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值