jQuery Mobile 滚动到焦点元素

标签 jquery jquery-mobile scrollto

我正在开发一个使用 jQuery 移动弹出窗口小部件的 jQuery 移动网站。在我的弹出窗口中,我有几个表单元素。如果内容无法在屏幕上显示,我将弹出窗口配置为在 y 轴上滚动。

我遇到的问题是,当用户在移动设备上并选择弹出窗口底部的表单元素时, native 键盘会切断用户刚刚选择的表单元素。

我意识到用户可以再次手动滚动到该元素,但是,我想让它为用户提供更好的体验。我认为解决此问题的唯一方法是在用户将元素置于焦点后以编程方式滚动到每个表单元素。下面是我一直在编写的代码,但是我无法让它工作。我的控制台日志不断显示以下错误:

Uncaught TypeError: Cannot read property 'top' of undefined

这是我正在使用的代码:

$('#popup input, #popup textarea').focusin(function() {
    var container = $('#popup'),
    scrollTo = $(this);

    container.scrollTop(
        scrollTo.offset().top - container.offset().top + container.scrollTop()
    );
});

有谁知道这个问题的解决办法吗?

最佳答案

我使用了错误的目标。我的原始代码使用 $(this) ,它应该使用 $(e.target) 代替。

$('#popup input, #popup textarea').focusin(function(e) {
        var container = $('#popup'),
        scrollTo = $(e.target);

        container.animate({
            scrollTop: scrollTo.offset().top
        }, 300);    
});

这段代码只起到了部分作用。我必须在窗口调整大小事件上使用相同的代码,以便在键盘滑出时捕获正确的偏移量

关于jQuery Mobile 滚动到焦点元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44048974/

相关文章:

jquery - 重写scrollTo jQuery 插件?

jquery在div中创建div而不是堆栈

javascript - jQuery Mobile URL 在 Android 浏览器上将哈希 (#) 转换为 %23

jquery - 移动进度条

jquery - 您可以在不更改 html 的情况下覆盖白色和黑色的 Jquery 移动股票图标吗?

jquery - Bootstrap 折叠 - 转到打开项目的顶部?

javascript - 查询 scrollTo 在 Firefox 中不起作用

jquery - 使用 $.mobile.changePage 并传递数据

javascript - HighCharts - 显示 xaxis 标题

javascript - 对内部选项卡(不是浏览器选项卡)的更改运行 Greasemonkey 脚本?