【发布时间】:2015-08-25 11:08:03
【问题描述】:
因此,我看到了很多关于 iOS 问题的主题,重点是 input/textarea 元素。 (参见here 和here)iOS 似乎不会让您手动关注其中一个元素,并要求它是真正的点击/单击才能关注该元素。
我尝试过模拟点击、触发点击、直接执行 click() ......各种事情。
这是我目前正在尝试实施的解决方法:
$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');
}
您不必担心滚动功能,我知道这很有效,并且我已经对其进行了足够的测试。注释掉的 $(e).val('touchstart') 可以毫无问题地更改 textarea 的文本,但 .focus() 在 iOS 上不起作用。我已经在 Android 设备上对此进行了测试,它工作正常,但在 iOS 上它只是没有调出键盘。有时它会开始调出键盘半秒钟然后又消失。
我已经查看了上面提到的其他线程,但我似乎无法弄清楚如何为此编写解决方法。
有什么想法吗?
【问题讨论】:
-
您是否尝试过触发 click() 而不是 focus()?我应该在任何设备上工作都没有问题。
$(this).next('input').click(); -
@EmanueleParisio 是的,我尝试使用
.click()代替。 -
我们可以找到解决这个问题的方法,但我可能会问,您为什么要以编程方式关注某些输入而不是设置值?
-
这个问题最初是因为
position: fixed的iOS 错误导致输入框失去定位。我正在使用的一种解决方法是,如果有人点击输入框,页面将滚动到页面底部,然后将注意力集中在输入框上,从而调出键盘。这是一个很好的解决方法,因为它仍然适用于 cmets 列表。
标签: javascript jquery ios