使用angularjs在cordova上失去焦点()

时间:2014-03-03 11:06:00

标签: javascript ios angularjs cordova

我有以下HTML标记:

 <button ng-click='focusKeyboard()'>focus keyboard</button>
 <input type='text' id='keyboard' />

我的javascript看起来像这样:

$scope.focusKeyboard = function(){
    document.getElementById("keyboard").focus();
}

问题是,只要#keyboard元素获得焦点,虚拟键盘就会出现然后突然消失,好像焦点在调度了focus()事件之后就已经丢失了。

我在iOS 7.0.3上使用cordova 3.4.0

有没有人有同样的问题?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我找到了我想出的最丑陋的解决方法:

        var kbd = document.getElementById("keyboard");

        kbd.addEventListener('click', function(){
            setTimeout(function(){
                kbd.focus();
            }, 400);
        });

        kbd.click();

它确实有效,是的,它确实很糟糕,因为任何超过400的超时都不起作用,这使我认为每个设备上的ms值都会发生变化。

答案 1 :(得分:0)

与ng-click结合使用angular-ui有类似的问题。 &#39; touchend&#39;事件过早地触发并关闭键盘(输入字段失去焦点,键盘关闭)

这是角度项目报告的问题:

https://github.com/angular/angular.js/issues/6432

以及使用解决方案的问题使用angular-ui项目的指令:

https://github.com/angular-ui/bootstrap/issues/2017