2010-07-13 3 views
11

Мне было интересно, знает ли кто-нибудь, как я пойду на обнаружение, когда полоса прокрутки появится внутри textarea.Javascript обнаруживает полосу прокрутки в textarea

В настоящее время я использую mootools для своего JavaScript, и у меня возникают проблемы с его поиском, чтобы обнаружить полосу прокрутки.

+1

Из любопытства, почему вы хотите, чтобы обнаружить его? – falstro

+0

, потому что я хотел использовать его для обнаружения, когда в текстовое поле было помещено 3 строки текста, и перестать допускать ввод любых символов. – Jamie

ответ

27
function has_scrollbar(elem_id) 
{ 
    const elem = document.getElementById(elem_id); 
    if (elem.clientHeight < elem.scrollHeight) 
     alert("The element has a vertical scrollbar!"); 
    else 
     alert("The element doesn't have a vertical scrollbar."); 
} 

Смотреть это http://jsfiddle.net/qKNXH/

+2

Будет ли это работать для текстового поля? –

+0

Да - http://jsfiddle.net/HBp5U/ – Castrohenge

+0

Спасибо большое! Здорово! <3 – marverix

4

решение jsFiddle Томмазо работает отлично, даже с текстовой области. Но если пользователь печатать в текстовом поле и вдруг TextArea дал себя в скроллбар, ваш Javascript не будет знать или быть triggered.So вы можете добавить что-то вроде

onKeyUp='has_scrollbar("textareaID")' 
3

Я сделал JQuery «совместимым "версия Tommaso Taruffis кода

function resize_until_scrollbar_is_gone(selector) { 
    $.each($(selector), function(i, elem) { 
     while (elem.clientHeight < elem.scrollHeight) { 
      $(elem).height($(elem).height()+5); 
     } 
    }); 
} 

Он может работать с несколькими элементами и принимает: селекторы, объекты JQuery или элементы DOM.

Это можно назвать так:

resize_until_scrollbar_is_gone('textarea'); 
Смежные вопросы