前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS设备input不能自动focus聚焦的解决方法

iOS设备input不能自动focus聚焦的解决方法

作者头像
德顺
发布2019-11-29 10:20:34
9.1K0
发布2019-11-29 10:20:34
举报
文章被收录于专栏:前端资源前端资源

移动端(iPhone、iPad)的 Safari 或者微信默认是不支持 autofocus 属性的,并且只有用户主动触发的事件才可以使 focus 一类的方法生效。

并且在 iOS 中使用 position: fixed 会导致 input 输入框的位置出现问题,导致 input 无法点击或者说无法聚焦。

找了几个解决方案,归纳整理一下:

1、stackoverflow作者,尝试过模拟点击,触发点击,直接执行click()……各种各样的事情。

这是目前正在用的解决方法:

代码语言:javascript
复制
$scope.gotoElement = function(eID) {
    // call $anchorScroll()
    $scope.smoothScrollTo(eID).then(function() {
        clickElement('#textarea');
    });          
}

function clickElement(e) {
  $(e).on('touchstart', function() {
    //$(e).val('touchstart');
    $(e).focus();
  });

  $(e).trigger('touchstart');
}

2、我们可以模拟一个 autofocus

HTML:

代码语言:javascript
复制
<input type="text" id="focus" />

JS:

代码语言:javascript
复制
document.addEventListener('touchstart', function (e) {
  document.getElementById('focus').focus();
});

3、尝试用触发 click() 替代 focus( ) :

代码语言:javascript
复制
$(this).next('input').click();

4、设置 CSS 属性,可能是 -webkit-user-select:none 导致,将其删除或着修改一下:

代码语言:javascript
复制
[type = text],textarea {
	-webkit-user-select:text
}

声明:本文由w3h5原创,转载请注明出处:《iOS设备input不能自动focus聚焦的解决方法》 https://cloud.tencent.com/developer/article/1545937

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档