在javascript中禁用输入焦点上的滚动

时间:2010-01-04 03:17:42

标签: javascript input scroll

我想知道当用户输入或点击<input type="text"></input>

时是否可以停止使用javascript滚动页面

3 个答案:

答案 0 :(得分:2)

所以我想出了如何实现这一目标,我将把它留作其他任何需要解决这个问题的人的记录。 (注意:此解决方案仅在safari和Firefox上测试过)

作为

<input id="text" type="text" />

功能

document.getElementById('text').onkeydown = new function(event){return false}

不会导致窗口移动滚动,以便用户在键入字段时可以看到输入字段。如果像我这样想要这对某些字母发生,而对其他人来说则不然,只需编辑onkeydown函数的内容,以便它对某些键码返回false,对其他键码则返回true。

答案 1 :(得分:1)

我遇到了类似的问题。尝试使用以下解决方案:订阅focus事件,在其处理程序中禁用窗口滚动并通过超时启用滚动。

我知道解决方案似乎不是很干净,但是演示看起来不错,没有视觉缺陷。

$(function() {
    var oldScroll = window.onscroll;
    $(document).on('focus', 'input', function(e) {
        window.onscroll = function () { 
            window.scroll(0,0); 
        } ;
        setTimeout(function() {
            window.onscroll = oldScroll;
        }, 100);
    });

});

http://jsfiddle.net/N4da4/8/

答案 2 :(得分:0)

您可以每n毫秒将scrollTop属性设置为x。我认为这种方法的问题是当用户试图滚动页面时,页面会显得生涩(技术术语)。

此外,你会打破用户的期望,他们可以随时滚动页面,我建议不要这样做,因为它最多会让他们感到困惑并且最坏的时候会烦扰他们。