用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输入框输入文字后失去焦点