Предотвратить прокрутку тела на колесе мыши, но не на texarea

Вот пример: http://jsfiddle.net/cB3jZ/15/

Когда вы прокручиваете текстовое поле колесиком мыши до конца, оно продолжает прокручивать остальную часть страницы. Как я могу предотвратить это!?

Когда я наводил курсор на текстовую область, я мог отключить внутреннюю прокрутку с помощью этого скрипта: https://stackoverflow.com/a/4770179/973485 Но я все еще хочу, чтобы текстовое поле можно было прокручивать.

http://jsfiddle.net/cB3jZ/15/

Надеюсь, вы можете помочь! знак равно


person BjarkeCK    schedule 11.01.2012    source источник


Ответы (2)


Я обнаружил, что он продолжает прокручиваться только в том случае, если внешний контейнер является тегом body. Так что если вы это работает!

<style>
   body,html {height:100%;}
   #fakeBody {height:100%; overflow:auto;}
</style>
<body>
<div id="fakeBody">
    <!-- popup with a textarea inside -->
</div>
</body>

http://jsfiddle.net/cB3jZ/34/

person BjarkeCK    schedule 11.01.2012
comment
+1 Хорошая находка, и JS тоже не задействован. Подтверждено, что он работает в Firefox и Chrome. - person Rob W; 12.01.2012

Использование плагина колесика мыши jQuery:

jQuery(function($) {
    $('textarea')
        .bind('mousewheel', function(event, delta) {      
            if (this.scrollHeight && this.scrollHeight <= $(this).height() + $(this).scrollTop() && delta < 0){ 
               event.preventDefault()
            } else if($(this).scrollTop()===0 &&  delta > 0){
               event.preventDefault()
            }
        });
});

Я должен предупредить вас, что он не работает в IE7 или старше (но он не выдает ошибок, так что это круто)

http://jsfiddle.net/cB3jZ/36/

person Ivan Castellanos    schedule 11.01.2012
comment
Спасибо! Но это бросает меня в начало страницы, когда я прокручиваю текстовое поле :( - person BjarkeCK; 12.01.2012
comment
Благодарю вас! Это отлично работает! Но я думаю, что буду использовать бесплатную версию javascript :) - person BjarkeCK; 12.01.2012