Javascript 检测软键盘在使用中的时间以及运行JS函数?
我有一个网站,点击后打开一个包含表单的模式。我在iPad上注意到,当软键盘打开时,它会覆盖表单的多个字段,由于我接近屏幕底部,我无法滚动显示这些隐藏字段 在研究这个问题的过程中,我遇到了一个问题,其中包括来自的代码。然而,当在iOS 8.3上测试时,这两个答案似乎都不起作用 以下是我想要实现的目标:Javascript 检测软键盘在使用中的时间以及运行JS函数?,javascript,jquery,soft-keyboard,Javascript,Jquery,Soft Keyboard,我有一个网站,点击后打开一个包含表单的模式。我在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设备可以测试)