iOS - 手动关注输入/文本区域的解决方法

ger*_*lol 42 javascript jquery ios

所以我已经看到很多关于iOS问题的线索,专注于输入/ textarea元素.(看这里这里)似乎iOS不会让你手动专注于其中一个元素,并要求它是一个真正的点击/点击以专注于元素.

我已经尝试模拟点击,触发点击,只需点击()直接点击...各种各样的事情.

以下是我目前正在尝试实施的解决方法:

$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');
}
Run Code Online (Sandbox Code Playgroud)

你不需要担心滚动功能,我知道这有效,我已经测试了足够的.注释掉的$(e).val('touchstart')工作没有问题来改变textarea的文本,但是.focus()在iOS上不起作用.我已经在Android设备上测试了它,它工作正常,但在iOS上它只是没有调出键盘.有时它会开始调高键盘半秒钟然后再次消失.

我已经看过上面提到的其他线程了,我似乎无法弄清楚如何为此编写解决方法.

有任何想法吗?

Yog*_*ale 13

我也像问题一样骚扰这个.我的问题通过简单的一个css属性解决,-webkit-user-select:none我删除了这一切,一切正常.试试这个.


Pey*_*man 12

在你的UIWebView,设置keyboardDisplayRequiresUserActionNO.

  • 对于使用cordova或phonegap的任何其他人,在config.xml中添加以下首选项"<preference name ="KeyboardDisplayRequiresUserAction"value ="false"/>" (15认同)

Sum*_*ick 2

我使用 iPad Air [iOS 7.0.4]、iPad Mini [iOS 7.1] 和 jQuery [1.11.3] 进行测试。

.focus 事件在输入和文本区域字段中都非常适合我。

我粘贴下面我测试过的代码。如果我遗漏了什么,请告诉我。

是否适用于某些以前版本的 iOS/jQuery?

我的 HTML,

<body>
    <!--<input id="in" type="text"/>-->
    <textarea id="in"></textarea>
    <button id="btn">Add Focus</button>
</body>
Run Code Online (Sandbox Code Playgroud)

我的查询,

$('#btn').click(function(){
    $('#in').focus();
})
Run Code Online (Sandbox Code Playgroud)

  • 很抱歉,但这不起作用,这几乎正是我上面写的。如果您查看我发布的相关问题,您可以查看更多示例。 (2认同)