JavaScript - 检测本机键盘完成加载或关闭事件

时间:2015-01-26 22:07:13

标签: javascript jquery mobile angularjs-directive

我们正在编写基于向导的多表单,并在移动设备上创建基于Helium的流程。

我们的大部分小部件都是基于Angular的,包含文本标题和元素(使用原生键盘)

氦气事件意味着我们滚动页面以显示聚焦元素位于最高位置(流量标题后的最高位置)

滚动基于窗口大小。

|-----Header-----|
|    [ title ]   |
|    [ input ]   |
|                |
|----Keyboard----|
|  1  2  3  4  5 |
|  6  7  8  9  0 |
|----------------|
  • 用户直接点击输入元素滚动计算 基于当前的窗口大小,因为我们无法检测本机键盘何时打开。
  • 直接关注输入,导致原生键盘改变窗口大小,现在页面滚动错误。

  • 我们是否可以检测到键盘关闭事件,然后才会滚动到下一个元素?

1 个答案:

答案 0 :(得分:0)

如果我能正确理解您的情景,您可以尝试这样的事情。

基本上你确定当前聚焦的元素是否是输入元素......如果是,则假设键盘正在显示(否则输入数据将很困难)

var currElem = document.activeElement;
if($(currElem).is('textarea, input[type="text"], input[type="password"], input[type="number"]')){
    //a textural input element has focus, thus the keyboard is
    //very likely showing :-)
}

这不是万无一失的,但理论上我认为这应该有效。