用angularjs在cordova上失去焦点()

Posted

技术标签:

【中文标题】用angularjs在cordova上失去焦点()【英文标题】:losing focus() on cordova with angularjs 【发布时间】:2014-03-03 11:06:00 【问题描述】:

我有以下 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

有人遇到过同样的问题吗?

提前致谢。

【问题讨论】:

【参考方案1】:

在 ng-click 与 angular-ui 结合时遇到了类似的问题。 'touchend' 事件过早触发并关闭键盘(输入字段失去焦点,键盘关闭)

这是关于 Angular 项目报告的问题:

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

这是 使用 angular-ui 项目上的指令的解决方案的问题:

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

【讨论】:

【参考方案2】:

我发现了我想出的最丑陋的解决方法:

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

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

        kbd.click();

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

【讨论】:

以上是关于用angularjs在cordova上失去焦点()的主要内容,如果未能解决你的问题,请参考以下文章

angularJS textAngular输入框输入文字后失去焦点

失去焦点事件啥意思

移动网站失去焦点以放弃键盘

使用蓝牙键盘时,离子输入失去焦点

在文本框失去焦点后 在文本框后面出现文字提示 用jquery怎么写

登陆窗口焦点失去问题。有遇到的麻烦给解决下,问题小,可有点小纠结。