2010-07-13 41 views
11

Tôi đã tự hỏi nếu có ai biết làm thế nào tôi sẽ đi về phát hiện khi thanh cuộn xuất hiện bên trong một textarea.Javascript phát hiện thanh cuộn trong textarea

Tôi hiện đang sử dụng mootools cho JavaScript của mình và tôi gặp sự cố khi phát hiện thanh cuộn.

+1

Ra khỏi tò mò, tại sao bạn muốn để phát hiện nó? – falstro

+0

vì tôi muốn sử dụng nó để phát hiện khi 3 dòng văn bản đã được đặt trong một hộp văn bản và ngừng cho phép thêm bất kỳ ký tự nào được nhập vào. – Jamie

Trả lời

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

Xem jsFiddle http://jsfiddle.net/qKNXH/

+2

Việc này có hiệu quả với văn bản không? –

+0

Có - http://jsfiddle.net/HBp5U/ – Castrohenge

+0

Cảm ơn rất nhiều! Thật tuyệt vời! <3 – marverix

4

giải pháp Tommaso của này hoạt động hoàn hảo, ngay cả với một vùng văn bản. Nhưng nếu người dùng đã gõ vào textarea và đột nhiên textarea cho bản thân một thanh cuộn, javascript của bạn sẽ không biết hoặc được triggered.So bạn có thể muốn thêm một cái gì đó giống như

onKeyUp='has_scrollbar("textareaID")' 
3

tôi đã thực hiện một jQuery "tương thích "phiên bản của Tommaso Taruffis

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

Nó có thể xử lý nhiều phần tử và chấp nhận: bộ chọn, đối tượng jQuery hoặc phần tử DOM.

Nó có thể được gọi là như thế này:

resize_until_scrollbar_is_gone('textarea'); 
Các vấn đề liên quan