移动设备的滚动问题(在自动完成列表中)

时间:2013-01-02 12:25:29

标签: javascript android html5 scroll iscroll4

我有一个自动完成列表,在列表中我使用iscroll 4滚动:http://cubiq.org/iscroll-4用于移动设备。(Html5 + PhoneGap for Android)

在输入中写入一个字母(AutoComplete已打开)时,我调用了一个刷新滚动的函数,因为每次写一个字母时,列表的大小都会改变。

我的刷新功能:

function RefreshScroll() {
    MyScroll.scrollToElement('li:nth-child(1)', 100)// Jump to the first element
    setTimeout(function () {
        MyScroll.refresh();// Refresh scroll bar -function of iscroll 4
    }, 0);
}

我的卷轴:

document.addEventListener('DOMContentLoaded', LoadScroll, false);

var myScroll;

function LoadScroll() {
    document.addEventListener('touchmove', function (e) { e.preventDefault(); });
    myScroll= new iScroll('wrapper');
}

我有几个问题:

  1. 第一次按下键盘字母时,列表显示而不滚动,只有在点击第二个字母时才显示滚动。

  2. 第二次出现滚动时,我向下滚动,当到达列表的末尾而不是跳回时,随着列表的继续,它会下降。

  3. 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

最后我用这种方式解决了问题:

因为自动完成填充需要一些时间,所以我只在一段时间后刷新滚动。

我更改了功能:

function RefreshScroll() {
    setTimeout(function () {
        MyScroll.scrollToElement('li:nth-child(1)', 100)
        setTimeout(function () {
            MyScroll.refresh();
        }, 0);
    }, 200);
}

这解决了两个问题,可能每次加载上一个列表滚动