我有以下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
有没有人有同样的问题?
提前致谢。
答案 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项目的指令: