2010-07-13 13 views
11

Me preguntaba si alguien sabe cómo voy a detectar cuando aparece la barra de desplazamiento dentro de un textarea.Javascript detectar barra de desplazamiento en textarea

Actualmente estoy usando mootools para mi JavaScript y tengo problemas para que detecte una barra de desplazamiento.

+1

Por curiosidad, ¿por qué querrías para detectarlo? – falstro

+0

porque quería usarlo para detectar cuándo se habían colocado 3 líneas de texto en un cuadro de texto y dejar de permitir el ingreso de más caracteres. – Jamie

Respuesta

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

ver este http://jsfiddle.net/qKNXH/

+2

¿Funcionará esto para un área de texto? –

+0

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

+0

¡Muchas gracias! ¡Es genial! <3 – marverix

4

solución de Tommaso jsFiddle funciona perfectamente, incluso con un área de texto. Pero si el usuario tuviera que escribir en el área de texto y de repente el área de texto en sí dio una barra de desplazamiento, el Javascript no sabría o sea triggered.So es posible que desee añadir algo como

onKeyUp='has_scrollbar("textareaID")' 
3

hice un jQuery "compatible "versión de Tommaso Taruffis código

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

puede manejar múltiples elementos y acepta: selectores, objetos jQuery, o elementos DOM.

Se le puede llamar así:

resize_until_scrollbar_is_gone('textarea'); 
Cuestiones relacionadas