【问题标题】:losing focus() on cordova with angularjs用angularjs在cordova上失去焦点()
【发布时间】: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

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

提前致谢。

【问题讨论】:

    标签: javascript ios angularjs cordova


    【解决方案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 值在每个设备上都会发生变化。

      【讨论】:

        猜你喜欢
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多