关于ios的光标和键盘回弹问题

更新日期: 2019-04-03阅读: 3k标签: 键盘

最近再做项目的时候(移动端),遇到了两个小问题,一个是ios端键盘不回弹的问题(微信浏览器),另一个是ios输入光标位置问题。首先看第二个问题:

就是点击一个按钮,要把输入框里面原来的内容加上一些固定的内容,然后一起输出到输入框。本来这个需求是很简单的,但是遇到一个问题,就是点击玩这个按钮之后,ios端的光标在输入框的最前面,体验不是很友好。请看下面的代码,这个就是我最开始写的

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    </head>
    <body>
        <p>测试ios端光标在表情之前的问题</p>
        <textarea name="" rows="" cols="">123</textarea>
        <button>获取焦点</button>
    </body>
    <script type="text/javascript">
        var btn = document.getElementsByTagName("button")[0];
        var txt = document.getElementsByTagName("textarea")[0];
        btn.onclick = function(){
            
            txt.value = txt.value + "456";
            txt.focus();
        }
    </script>
</html>


其中18行是获取原来里面的值,然后拼接上最新的值,然后让输入框获取焦点,这个时候ios 的光标就在输入框的最前面。大家可以找个ios测试一下,我截图没有截到光标;安卓是没有问题的这样的体验显然是不能达到需求的,所以去网上找了一下,发现只要把18行和19行的代码互换位置,这样就可以了。这个我也是不是很明白,这个时候Android和ios都是可以的,真的很神奇,而且解释不通。

另一个问题是有的ios版本,当弹出输入法输入完成之后,键盘回去了,但是页面没有返回。这个时候就需要在输入框中失去焦点的情况下,调用一个函数,我把函数放在下面:

/*ios键盘回弹**********************************************/
function kickBack() {
    //alert("是去焦点了");
    setTimeout(() => {
      window.scrollTo(0, document.body.scrollTop + 1);
      document.body.scrollTop >= 1 && window.scrollTo(0, document.body.scrollTop - 1);  
    }, 10)
  }
/*ios键盘回弹end**************************************/


最后再说一下关于ios的css兼容问题,就是我在设置背景的时候,我是用的rgb来设置颜色,但是因为编辑器的原因,他给我多了一个a,成了rgba(),最后一个是背景透明。但是在ios端是不可以的,他执行到这一句话的时候,是会报错的。这次记录下来,给自己提个醒。 

 

来自:https://www.cnblogs.com/daniao11417/archive/2019/04/03/10648667.html


链接: https://www.fly63.com/article/detial/2712

html的原生自定义键盘(数字版)

前端现在很多时候,由于要限制文本的输入格式(这里指只允许输入数字),常常需要使用到自定义键盘。自定义键盘难免涉及到复用,资源占用等问题,有时候还会由于封装不好导致事件混乱、或者由于动画效果没实现好导致看上去很尴尬

移动端input框被虚拟键盘挡住的js解决方法

在webapp开发过程中,当用户切换输入法额时候,会出现输入框被弹起的虚拟键盘遮挡住的情况,这时用户输入只能盲填 ,这会验证影响用户体验。

微信小程序仿input组件、虚拟键盘

仿照微信支付界面,金额输入框不能用input;要有光标,点击输入框调起虚拟键盘,点击输入框以外的地方隐藏输入框;第一个输入的是小数点要补全,比如:第一个输入的是小数点,则输入框显示为 0. ;

ionic开发中,输入法键盘弹出遮挡住div元素

采用ionic 开发中,遇到键盘弹出遮挡元素的问题。以登陆页面为例,输入用户名和密码时,键盘遮挡了登陆按钮。引用:将命名好的指令名 :popupKeyBoardShow,按驼峰拆开用-连接成小写,如:popup-key-board-show。

可能这些是你想要的H5软键盘兼容方案

最近一段时间在做 H5 聊天项目,踩过其中一大坑:输入框获取焦点,软键盘弹起,要求输入框吸附(或顶)在输入法框上。需求很明确,看似很简单,其实不然。从实验过一些机型上看,发现主要存在以下问题:

解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)

微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白 最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试,软键盘收起后,再滚动一下页面,下面的留白就会消失

为什么程序员使用电脑时,很少使用鼠标,只需要键盘就能工作?

现在很多人在使用电脑的时候会特别依赖鼠标,因为使用鼠标操作会比较方便,身边有程序员的人可能会疑惑为什么他们在使用电脑的时候,不需要鼠标,只需要一个键盘就能工作了呢?

通过focusout事件解决IOS键盘收起时界面不归位的问题

今天在开发一个移动端的 H5 页面时,遇到了 IOS 上键盘收起时界面无法归位的问题。下面详细描述下问题和症状:出问题的页面是一个表单结构。即类似于一个 div 下有4个 input 表单的结构

vue中监听返回键

在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿;利用 H5的 pushstate(个人理解为增加页面栈)特性与onpopup事件

移动端调起软键盘导致 position:fixed 偏移

app内打开H5页面,页面包含input输入框,点击input调起软键盘,输入完成点击下方提交按钮弹出toast时,会出现t toast 跳动的现象;关于 position: fixed首先来看,MDN 中对 position: fixed 的说明:

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!