2010-07-13 4 views
11

Je me demandais si quelqu'un sait comment je voudrais aller sur la détection lorsque la barre de défilement apparaît à l'intérieur d'un textarea.Javascript détectent barre de défilement dans textarea

Je suis actuellement en train d'utiliser mootools pour mon JavaScript et je rencontre des problèmes pour le détecter.

+1

Par curiosité, pourquoi voudriez-vous le détecter? – falstro

+0

parce que je voulais l'utiliser pour détecter quand 3 lignes de texte avaient été placées dans une zone de texte et arrêter de laisser entrer d'autres caractères. – Jamie

Répondre

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

Voir cette jsFiddle http://jsfiddle.net/qKNXH/

+2

Est-ce que cela va fonctionner pour une zone de texte? –

+0

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

+0

Merci beaucoup! C'est bien! <3 – marverix

4

solution de Tommaso fonctionne parfaitement, même avec une zone de texte. Mais si l'utilisateur devait entrer dans la zone de texte et tout à coup le textarea lui-même a donné une barre de défilement, votre javascript ne sait pas ou être triggered.So vous voudrez peut-être ajouter quelque chose comme

onKeyUp='has_scrollbar("textareaID")' 
3

J'ai fait un jQuery « compatible "version de 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); 
     } 
    }); 
} 

Il peut gérer plusieurs éléments et accepte: sélecteurs, objets jQuery ou éléments DOM.

Il peut être appelé comme ceci:

resize_until_scrollbar_is_gone('textarea');