防止在textarea中退格时窗口滚动

时间:2014-02-28 16:55:22

标签: javascript html css scroll textarea

我有一个简单的textarea超出浏览器窗口大小,如下所示。当用户添加一些文本时,窗口总是滚动到光标的位置。因此,如果光标跳出窗口,窗口会滚动到底部。那么我怎么能让它完全不滚动(光标应该离开可见的窗口)?

a busy cat http://i58.tinypic.com/20f72md.png

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <style>
        textarea{
            margin-top: 500px;
            padding: 0;
            position: absolute;
        }
    </style>
    <script type="text/javascript">
        function keypressed(el,event) {
            if(event.keyCode == 8){
                event.preventDefault();
            } else {
                el.value = el.value + String.fromCharCode(event.keyCode);
            }
            return false;
        }
    </script>
</head>
<body class=noscroll">
    <textarea onkeypress="keypressed(this,event);return false;" rows="5"></textarea>
</body>
</html>

到目前为止,我对textarea使用固定定位,并且不会出现任何滚动。由于iOS无法以正确的方式显示固定位置,因此我尝试使用绝对定位,如上所示。我添加了一些onkeypressed代码,以防止在任何输入上滚动,这可以工作但不在BACKSPACE(keycode == 8)。一旦光标离开窗口并且命中退格,窗口将再次滚动到光标的位置。

有更简单的方法来达到目标​​还是我错过了什么?

感谢任何提示。

1 个答案:

答案 0 :(得分:0)

查看javascript控制台后 - 您的代码中出现错误。

你想在这里完成什么?的onkeydown = “的onkeydown(此,事件);”

未捕获RangeError:超出最大调用堆栈大小