Safari(移动)IOS - 单击外部时输入不会失去焦点

Posted

技术标签:

【中文标题】Safari(移动)IOS - 单击外部时输入不会失去焦点【英文标题】:Safari (mobile) IOS - Input doesn't loses focus when clicking outside 【发布时间】:2017-06-30 15:20:00 【问题描述】:

我正在做一个提供结果的搜索栏(类似于自动完成),但在 ios 的 Safari 上,当键盘打开时在输入标签之外点击时它不会失去焦点。

我做了一个简单的 jsfiddle 来演示重现此问题的最少代码:

https://jsfiddle.net/coppolaemilio/0bqrLcwe/4/

html

<input class="selector" type="text">
<ul>
  <li>element</li>
</ul>

JS (jQuery)

$('.selector').focus(function() 
    $('ul').addClass('visible');
);
$('.selector').focusout(function() 
    $('ul').removeClass('visible');
);

CSS

.selector
  margin: 20px;

ul 
  display: none;

ul.visible 
  display: block;

【问题讨论】:

【参考方案1】:

我设法通过使用这个找到了解决方案:

$(document).on('touchstart', function (event) 
  if (!$(event.target).closest('.country-selector').length) 
    if ($('.country-selector').is(":visible")) 
      $('input.country-selector').blur();
    
  
);

https://jsfiddle.net/coppolaemilio/0bqrLcwe/5/

【讨论】:

以上是关于Safari(移动)IOS - 单击外部时输入不会失去焦点的主要内容,如果未能解决你的问题,请参考以下文章

iOS Safari/Chrome 不会向上滚动以在无线电输入上显示验证错误消息

ios8 safari 独立网络应用程序在单击选择时崩溃

移动 Safari - 输入插入符号不会随着溢出滚动一起滚动:触摸

iOS Safari(移动)和 Angular Material UI:专注于输入字段时不需要的闪烁文本

移动 safari (iOS) 中的 javascript 不会下载日历邀请

iOS 9 上的 Safari 不会触发隐藏输入文件的点击事件