Javascript 检测软键盘在使用中的时间以及运行JS函数?

Javascript 检测软键盘在使用中的时间以及运行JS函数?,javascript,jquery,soft-keyboard,Javascript,Jquery,Soft Keyboard,我有一个网站,点击后打开一个包含表单的模式。我在iPad上注意到,当软键盘打开时,它会覆盖表单的多个字段,由于我接近屏幕底部,我无法滚动显示这些隐藏字段 在研究这个问题的过程中,我遇到了一个问题,其中包括来自的代码。然而,当在iOS 8.3上测试时,这两个答案似乎都不起作用 以下是我想要实现的目标: 检测键盘何时打开 找到键盘的高度 在页脚底部添加填充以适应键盘的高度 当键盘关闭或关闭时,填充物将被移除 有几件事需要注意: 如果有人正在使用连接的键盘(包括蓝牙键盘),不要做任何事情,因为软

我有一个网站,点击后打开一个包含表单的模式。我在iPad上注意到,当软键盘打开时,它会覆盖表单的多个字段,由于我接近屏幕底部,我无法滚动显示这些隐藏字段

在研究这个问题的过程中,我遇到了一个问题,其中包括来自的代码。然而,当在iOS 8.3上测试时,这两个答案似乎都不起作用

以下是我想要实现的目标:

  • 检测键盘何时打开
  • 找到键盘的高度
  • 在页脚底部添加填充以适应键盘的高度
  • 当键盘关闭或关闭时,填充物将被移除
有几件事需要注意:

  • 如果有人正在使用连接的键盘(包括蓝牙键盘),不要做任何事情,因为软键盘不应该出现
  • jQuery可以使用
  • 解决方案必须通过客户端代码运行
  • 我更喜欢涵盖iOS和Android的解决方案。优选地,可以使用软键盘的任何设备

当有人使用软键盘在模式中填写表单时,我如何才能找到一个能增加页脚填充的解决方案,这将适用于大多数设备?

不久前,我遇到了一个类似的问题,我找到了一个小的解决方案,当使用手机或平板电脑并激活键盘时,它会触发屏幕的调整大小事件,以便您可以使用该事件触发功能

var lastHeight = $(window).height(); //  store the intial height.
var lastWidth = $(window).width(); //  store the intial width.
var keyboardIsOn = false;

$(window).resize(function () {
    if ($("input").is(":focus")) {
        keyboardIsOn =
           ((lastWidth == $(window).width()) && (lastHeight > $(window).height()));
    }   
    if(keyboardIsOn){
        var keyboardHeight = lastHeight - $(window).height();
        $("footer").css("padding", keyboardHeight+"px");
    } else{
        $("footer").removeAttr("style");

        //or if you just want to remove the padding
        //$("footer").css("padding", 0);
    }
}); 

//An alternative solution is by checking if the height of the screen 
//change on input/textarea focus.

$('input, textarea').focus(function() {
     keyboardIsOn =
           ((lastWidth == $(window).width()) && (lastHeight > $(window).height()));
     if(keyboardIsOn){
        var keyboardHeight = lastHeight - $(window).height();
        $("footer").css("padding", keyboardHeight+"px");
    } else{
        $("footer").removeAttr("style");

        //or if you just want to remove the padding
        //$("footer").css("padding", 0);
    }
});

这在iOS上不起作用。我在某个地方读到(现在找不到源代码),从iOS 8(可能是6或7)开始,键盘不会触发调整大小事件。@Lynda希望此解决方案有所帮助。不幸的是,这仍然不起作用。至少在iPad上(没有Android设备可以测试)