2010-07-13 14 views
11

Ich fragte mich, ob jemand weiß, wie ich gehen würde zu erkennen, wenn die Bildlaufleiste in einem textarea erscheint.Javascript erkennen scrollbar in textarea

Ich verwende derzeit Mootools für mein JavaScript und ich habe Probleme, es zu finden, eine Bildlaufleiste zu erkennen.

+1

Aus Neugier, warum sollte man es erkennen soll:

Es kann wie folgt aufgerufen werden? – falstro

+0

, weil ich damit feststellen wollte, wenn 3 Textzeilen in ein Textfeld eingegeben wurden und keine weiteren Zeichen mehr eingeben dürfen. – Jamie

Antwort

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."); 
} 

diese Lösung der jsFiddle http://jsfiddle.net/qKNXH/

+2

Wird dies für ein Textfeld funktionieren? –

+0

Ja - http://jsfiddle.net/HBp5U/ – Castrohenge

+0

Vielen Dank! Es ist großartig! <3 – marverix

4

Tommaso Siehe perfekt, auch mit einem Textbereich arbeitet. Aber wenn der Benutzer das Textfeld eingeben waren und plötzlich das Textfeld gab sich eine Bildlaufleiste, würde Ihr Javascript nicht wissen oder sein triggered.So Sie so etwas wie

onKeyUp='has_scrollbar("textareaID")' 
3

ich ein jQuery gemacht hinzufügen möchten „kompatibel "-Version von Tommaso Taruffis Code

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

Es können mehrere Elemente verarbeiten und akzeptiert: Selektoren, jQuery Objekte oder DOM-Elemente.

resize_until_scrollbar_is_gone('textarea'); 
Verwandte Themen