iOS – 手动对焦于input/文本区的解决方法

所以我已经看到很多有关iOS问题的话题,主要关注input / 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'); } 

你不需要担心滚动function,我知道这个工程,我已经testing了足够的。 注释掉$(e).val('touchstart')不会改变文本区域的文本,但是.focus()在iOS上不起作用。 我已经在Android设备上testing过,并且工作正常,但是在iOS上它并没有显示出键盘。 有时它会开始提起键盘半秒钟,然后再次消失。

我已经看过其他线程,正如我上面提到的,我似乎无法弄清楚如何编写一个解决方法。

有任何想法吗?

我也被同样的问题骚扰。 我的问题解决了简单的一个CSS属性是-webkit-user-select:none我reomved这一切工作正常。 试试这个。

在您的UIWebView ,将keyboardDisplayRequiresUserAction设置为NO

我为我的testing使用了iPad Air [iOS 7.0.4],iPad Mini [iOS 7.1]和jQuery [1.11.3]。

.focus事件在input和textarea字段中都能很好地工作。

我正在粘贴下面我testing过的代码。 请让我知道如果我失去了什么。

它是以前的版本的iOS / jQuery?

我的HTML,

 <body> <!--<input id="in" type="text"/>--> <textarea id="in"></textarea> <button id="btn">Add Focus</button> </body> 

我的查询,

 $('#btn').click(function(){ $('#in').focus(); })