手机端H5页面在input输入框获得焦点时禁止唤起键盘

一、平台

手机移动端

二、实现的效果

当input输入框获得焦点时,在保留光标的情况下,又不让手机虚拟键盘弹起

刚开始在网上找了一番,网上的回答大都自以为是,根本没有弄清诉求,他们提供的三种解决方法,把input框用div代替、给input框设readonly属性、input获得焦点时使其失去焦点,统统都达不到我想要这种效果

好在后来还是让我找到了一位志同道合的博友,他的处境和我几乎一样,而且他的解决办法也十分有效

这是他的原文地址:https://blog.csdn.net/DACBE/java/article/details/89343053

这么方便有效的办法,居然没被发扬光大,所以我在这里再稍微加点扩散影响力,让更多的同仁看到

以下套路,原作者是用VUE实现的,我这里就结合自己的需求,改了一个jquery的版本,代码不多,大家一看就懂

<input type="text" placeholder="输入文字试试" id="test" onfocus="stopKeyborad($(this))">
<script type="text/javascript" src="../../script/jquery.min.js"></script>
<script type="text/javascript">
function stopKeyborad(obj)
    {
      obj.attr('readonly', 'readonly');
  setTimeout(function() {
    obj.removeAttr('readonly');
  }, 200);
    }
</script>

其实就是在短时间内完成了这几步--》1.在触发焦点事件时将input设为readonly,避免系统唤起虚拟键盘——》2.等待短暂的200毫秒后,再将input输入框的readonly去掉——》3.这时光标还会在input上

如果还不能理解,就去看看原文作者的说法,我也是借花献佛

posted @ 2020-07-15 18:33  月井石  阅读(4079)  评论(0编辑  收藏  举报