iphone input 输入框设置 readonly 依然出现光标、点击 input 依然出现虚拟键盘问题

处理 input 输入框时,搞移动端开发必然会遇到一些坑,如虚拟键盘被遮挡、虚拟键盘显示异常等、使用 fixed 布局失效等问题。本次提一个在使用 input 输入框结合做选择器组件时会遇到的一个坑,背景是点击输入框弹出一个时间、地址选择器。在 iphone 下 input 输入框设置了 readonly 依然出现光标、点击 input 依然会先出现虚拟键盘,导致交互不太友好

解决方案:

input 输入框设置 readonly 依然出现光标的解决方案:加上样式:-webkit-user-select :none 即可,如下:

input:read-only {
  -webkit-user-select :none
}

点击 input 依然出现虚拟键盘的解决方案:尝试让获取焦点的元素失去焦点,document.activeElement.blur();,如下:

if(navigator.userAgent.match(/iPhone/i)) {
  $('#myInput').click(function () {
    document.activeElement.blur();
  });
}

参考引用:
https://blog.csdn.net/weifenwang/article/details/75222544
https://www.cnblogs.com/shisufei/p/6909450.html