在iphone safari webapp中隐藏键盘

mun*_*nch 31 iphone keyboard web-applications blur

我正在为iPhone创建一个基于HTML/CSS/JS的webapp.我正在使用表单来接收输入并将数据传递给脚本,但我遇到的一个问题是键盘不会消失.用户将输入信息,点击提交,因为它是JavaScript,页面不会重新加载.键盘仍然存在,这是一个麻烦,并为用户增加了另一个步骤(必须关闭它).

有没有办法强迫Safari中的键盘消失?从本质上讲,我有一种感觉,这个问题等同于问我如何强制输入框失去焦点或模糊.在线查看,我发现有很多示例可以检测模糊事件,但没有一个可以强制发生此事件.

小智 41

更简单地说,您可以在当前聚焦的元素上调用blur().$( "#inputWithFocus").模糊()

  • 最优雅!在jQuery中:$(this).blur() (5认同)

iPa*_*011 39

document.activeElement.blur();
Run Code Online (Sandbox Code Playgroud)


cee*_*yoz 27

您可以尝试focus()使用非文本元素,例如提交按钮.

  • blur(),tap(),click(),focus()不再工作以在iOS 8+上解决这个问题 (2认同)
  • @Metagrapher,此问题是由客户的登录iframe引起的,该iframe在文本输入软键盘返回键后并未散焦。hacky解决方案是:创建一个隐藏的(例如,屏幕外)文本输入元素,对其进行聚焦并在屏幕过渡到下一个屏幕之前进行模糊处理。 (2认同)

Hus*_*sky 18

这是一个小代码片段,只要焦点在输入或textarea字段中并且用户点击该元素之外(桌面浏览器中的正常行为),它就会始终隐藏键盘.

function isTextInput(node) {
    return ['INPUT', 'TEXTAREA'].indexOf(node.nodeName) !== -1;
}

document.addEventListener('touchstart', function(e) {
    if (!isTextInput(e.target) && isTextInput(document.activeElement)) {
        document.activeElement.blur();
    }
}, false);
Run Code Online (Sandbox Code Playgroud)

  • 非常好,我可以想象这个奇妙的代码片段受到Web App和phonegap开发人员的极大追捧 (5认同)
  • 这应该是答案. (3认同)