移动端输入框禁止软键盘弹出

这篇博客介绍了如何使用JavaScript和Vue.js的指令来阻止输入框和时间选择器在移动端弹出虚拟键盘。通过监听`focus`事件并调用`blur`方法强制失去焦点,从而避免了虚拟键盘的显示。同时,对于Element UI的时间选择器,博主提供了针对单个日期选择器和日期范围选择器的解决方案,通过添加事件监听器同样实现禁用焦点和虚拟键盘。

输入框:

 <el-input v-model="value" @focus="forbid" />

//focus 聚焦事件
 forbid () {
      document.activeElement.blur()
 }
  • document.activeElement: 返回文档中当前获得焦点的元素。

时间输入框:

//单个时间
<el-date-picker
            @focus="forbid"
            value-format="yyyy-MM-dd"
            v-model="reportForm.reportDate"
            type="date"
            placeholder="选择日期"
          >
</el-date-picker>

//时间范围
 <el-date-picker
              v-model="supplyWorkOrderForm.timeRange"
              type="datetimerange"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              value-format="yyyy-MM-dd HH:mm:ss"
              unlink-panels
              @focus="forbid"
>


 // 禁止移动端点击时间选择器弹出虚拟键盘
    forbid () {
      document.activeElement.blur()
      this.$nextTick(() => {
      //单个时间插件
        let inputTime = document.querySelectorAll(
          '.el-date-editor .el-input__inner'
        )
        inputTime.forEach(item => {
          item.addEventListener('focus', () => {
            document.activeElement.blur()
          })
        })
        //时间范围插件
        let input = document.querySelectorAll(
          '.el-date-range-picker__editor .el-input__inner'
        )
        input.forEach(item => {
          item.addEventListener('focus', () => {
            document.activeElement.blur()
          })
        })
      })
    },
前端移动端开发中,要实现输入框固定在底部,当键盘弹出上方内容滚动时输入框仍保持在底部,可参考以下思路和示例代码。 对于微信小程序场景,会面临键盘弹起后页面上推、输入框被遮挡等问题,目标是顶部导航栏和底部输入框固定不动,中间内容部分自适应。虽然没有直接给出固定输入框在底部的代码,但可借助对页面布局的控制达成此目的,保证输入框能自动抬起至键盘上方,顶部导航栏保持固定 [^1]。 对于移动端 iOS 网页,存在收起键盘底部有空白、软键盘弹起遮挡输入框等问题。要解决底部空白问题,可在输入框失焦时,把窗口滚动位置设置到(0,0) ,示例代码如下: ```html <input type="text" onblur="window.scrollTo(0, 0);"> ``` 这里通过 `onblur` 事件,在输入框失去焦点时将页面滚动到顶部,避免底部出现空白 [^2]。 移动端 ios 底部 `input` 弹出软键盘时被遮挡的问题,可使用以下 jQuery 代码解决: ```javascript <script> $(function () { $('input').on('click', function () { // 使用定时器是为了让输入框上滑时更加自然 setTimeout(function () { var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; window.scrollTo(0, document.body.scrollHeight); console.log('111'); }, 100); }); }); $(function () { (/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener('blur', event => { // 当页面没出现滚动条时才执行,因为有滚动条时,不会出现这问题 // input textarea 标签才执行,因为 a 等标签也会触发 blur 事件 document.body.scrollIntoView() // 回顶部 }, true); }); </script> ``` 这段代码在输入框被点击时,利用定时器让页面滚动到合适位置,使输入框不被遮挡;在输入框失去焦点时,若为 iOS 设备且页面无滚动条,让页面回到顶部 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值