Как в javascript отследить изменение текста в textarea

12
[Удален]
6029

Хочу отслеживать изменения текста в textarea (то есть нужно чтобы мой обработчик вызывался при любом вводе символа), чтобы выводить на странице количество введенных слов и символов. Как это реализовать?

bbon
На сайте с 01.04.2006
Offline
168
#1

Я когда-то так решил проблему:

<textarea id="idadstext" name="adstext" cols="35" rows="6" onfocus="intads=window.setInterval('mkCount()',450);" onblur="intads=window.clearInterval(intads);"></textarea> 

введено: <span id="idcounter">0</span>

.....................

function mkCount() {
var val = $('idadstext').value.trim().length;
$('idcounter').set('text', val);
if (val > 100) {
$('idcounter').addClass('error');
}
else {
$('idcounter').removeClass('error');
}

}

Только чтобы $ использовать, нужно подключить mootools

I
На сайте с 21.02.2008
Offline
117
#2

Можно так сделать:


<span id="count"></span>
<textarea name="text" onkeyup="document.getElementById('count').innerHTML = this.value.length;"></textarea>
[Удален]
#3
ippoman:
Можно так сделать:

я уже решил проблему, по onload устанавливаю setInterval, чтобы каждые полсекунды вызывались функции пересчета и вывода количества слов и символов.

T
На сайте с 13.01.2009
Offline
50
#4

хм , а onChange не работает ?

[Удален]
#5
Troytft:
хм , а onChange не работает ?

а вы почитайте подробнее какие именно события он обрабатывает

T
На сайте с 13.01.2009
Offline
50
#6

Сори, не прав

bbon
На сайте с 01.04.2006
Offline
168
#7
plamar:
я уже решил проблему, по onload устанавливаю setInterval, чтобы каждые полсекунды вызывались функции пересчета и вывода количества слов и символов.

существует такое понятие, как культура программирования. Выставляя обработчик по onload - вы вынуждаете браузер пользователя вхолостую работать, внося свою маленькую лепту в загрузку чужого компа. Обработчик должен включаться, когда набирается/вставляется текст и освобождать процессор от этого занятия, когда поле теряет фокус. Решение я показал выше.

[Удален]
#8
bbon:
существует такое понятие, как культура программирования. Выставляя обработчик по onload - вы вынуждаете браузер пользователя вхолостую работать, внося свою маленькую лепту в загрузку чужого компа. Обработчик должен включаться, когда набирается/вставляется текст и освобождать процессор от этого занятия, когда поле теряет фокус. Решение я показал выше.

я не использовал ваше решение по тому поводу, что сомневаюсь в его работоспособности в моей ситуации - дело в том что иногда текст в поле меняется с помощью самого скрипта, то есть:

document.getElementById('textarea_id').value="text";

я не проверял, но сомневаюсь что предложенные вами обработчики выполняются

bbon
На сайте с 01.04.2006
Offline
168
#9
plamar:
я не использовал ваше решение по тому поводу, что сомневаюсь в его работоспособности в моей ситуации - дело в том что иногда текст в поле меняется с помощью самого скрипта

ну, если скрипт иногда вносит данные в поле textarea, то он может и самостоятельно пересчитать значение счётчика в такой ситуации :)

Да, впрочем неважно, я просто отметил..

D
На сайте с 14.01.2007
Offline
153
#10

onkeydown не вариант? не работает при copy/paste

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий