无法在iOS 9上使用fastclick键入textarea

时间:2016-01-28 11:29:15

标签: javascript html ios ipad fastclick

我花了最近几天寻找解决方案,但所有应该工作的东西(根据文档)都没有。

我正在使用fastclick来消除打算在iPad上运行的HTML5应用程序的300毫秒延迟。一切都很好,除了我失去了将文本输入textarea的能力。简单的单行字段可以工作,但不能使用多行textarea。

当我点击文本区域时,键盘弹出,我可以开始输入。输入的第一个字母出现在文本区域中 - 但这就是全部。后续的信件没有。如果我关闭键盘并再次点击文本区域,我可以输入另一个字母。

我已尝试了所有建议内容,包括needsclickneedsfocus等。我尝试编辑fastclick.js以扩展处理input元素的特殊代码以覆盖{ {1}} - 没什么。

我可能因为它而不得不转储快速点击并自己手动完成所有操作,因为我已经在这个问题上丢失了近一周。然而,在我这样做之前,也许有人可以指出我正确的方向。

请注意,问题出现在iPad和iPhone上,带有iOS 9.2(特别是9.2.1 - 最新版本)。

2 个答案:

答案 0 :(得分:2)

好吧,原因很简单 - 与fastclick没什么关系。它this answer实际上是为我解决的。

在我的CSS中,我有以下内容:

body * {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
}

body input {
    -webkit-touch-callout: text;
    -webkit-user-select: text;
    user-select: text;
}

这样做是为了处理愚蠢的用户,这些用户会触及" touchstart"在按钮上然后开始考虑他们想要什么 - 然后在" touchend"之后,ios将进入复制/粘贴模式。

然后在输入上明确禁用它以允许在文本中复制/粘贴。然而,我忘了在第二部分中包括textarea。现在第二部分看起来像这样:

body input, body textarea {
    -webkit-touch-callout: text;
    -webkit-user-select: text;
    user-select: text;
}

一切都按预期工作。

答案 1 :(得分:1)

jQuery修复

$('input.form-control,textarea').on('click',function(){
    $(this).focus();
});

这对我来说很有效。