Предотвратите прокрутку тела на колесе, но не в texarea - PullRequest
2 голосов
/ 12 января 2012

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

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

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

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

Надеждаты можешь помочь!: =)

Ответы [ 2 ]

1 голос
/ 12 января 2012

Я обнаружил, что прокрутка продолжается только во внешнем контейнере, если это тег 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/

1 голос
/ 12 января 2012

Использование плагина jQuery mousewheel:

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/

...