2010-07-13 4 views
11

Mi chiedevo se qualcuno sa come farei a rilevare quando la barra di scorrimento appare all'interno di uno textarea.Rileva Javascript barra di scorrimento nell'area testo

Attualmente sto utilizzando mootools per il mio JavaScript e sto riscontrando problemi nel rilevare una barra di scorrimento.

+1

Per curiosità, perché si vuole di rilevarla? – falstro

+0

perché volevo usarlo per rilevare quando 3 righe di testo erano state inserite in una casella di testo e smettere di consentire l'inserimento di altri caratteri. – Jamie

risposta

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

Vai a questa http://jsfiddle.net/qKNXH/

+2

Funzionerà per un'area di testo? –

+0

Sì - http://jsfiddle.net/HBp5U/ – Castrohenge

+0

Grazie mille! È ottimo! <3 – marverix

4

soluzione jsFiddle di Tommaso funziona perfettamente, anche con un'area di testo. Ma se l'utente dovesse digitare nella textarea e improvvisamente textarea si è dato una barra di scorrimento, la tua JavaScript non saprebbe o essere triggered.So si potrebbe desiderare di aggiungere qualcosa di simile

onKeyUp='has_scrollbar("textareaID")' 
3

ho fatto un jQuery "compatibili "versione del codice Tommaso Taruffis

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

e 'in grado di gestire più elementi e accetta: selettori, oggetti jQuery, o elementi DOM.

Può essere chiamato in questo modo:

resize_until_scrollbar_is_gone('textarea');