Число знаков в textarea без тегов
Здравствуйте. В JS я новичок. Хочу сделать счетчик симовлов и "веса текста" для текстового поля. Получилось вот как:
<html> <head> <script> function counter(el) { el=el.replace(/<\/?[^>]+>/g, ''); document.getElementById('count').innerHTML = el.value.length; document.getElementById('kb').innerHTML = (el.value.length/1024).toFixed(2); } </script> </head> <body> Вы ввели: <span id='count'>0</span> символов. <span id='kb'>0</span>Kb <form> <textarea id="text" onkeypress="counter(this);" onkeyup="counter(this);" onchange="counter(this);"></textarea><br> </form> </body> </html> Все работет, но я хотел чтобы считалось без учета тэгов, поэтому получилось, хотел вставить вот такую строку с регулярным выражением. el=el.replace(/<\/?[^>]+>/g, ''); После этого все все вообще перестает работать. В чем дело, что не так? |
Надёжней всего делать через DOM:
<html> <head> <script> function counter(el) { var wrapper = document.createElement('DIV'); wrapper.innerHTML = el.value; var len = (wrapper.textContent || wrapper.innerText).length; document.getElementById('count').innerHTML = len; document.getElementById('kb').innerHTML = (len/1024).toFixed(2); } </script> </head> <body> Вы ввели: <span id='count'>0</span> символов. <span id='kb'>0</span>Kb <form> <textarea id="text" onkeypress="counter(this);" onkeyup="counter(this);" onchange="counter(this);"></textarea><br> </form> </body> </html> |
Спасибо, exec, вы просто кудесник! А как красиво сделать что-бы считал еще сразу через | с учетом тэгов? Я думаю что смогу сделать, но думаю такого нагорожу))))
|
<html> <head> <script> function counter(el) { var wrapper = document.createElement('DIV'); wrapper.innerHTML = el.value; var len = (wrapper.textContent || wrapper.innerText).length; document.getElementById('count').innerHTML = len + ' | ' + el.value.length; document.getElementById('kb').innerHTML = (len/1024).toFixed(2); } </script> </head> <body> Вы ввели: <span id='count'>0</span> символов. <span id='kb'>0</span>Kb <form> <textarea id="text" onkeypress="counter(this);" onkeyup="counter(this);" onchange="counter(this);"></textarea><br> </form> </body> </html> |
Еще раз большое спасибо!
|
А можно-ли изменить скрипт, чтобы не считал только теги?
сейчас он не считает <dsds> |
<dsds> - вполне себе html5 тег.
|
значит не удачный пример, не тег к примеру <di3bsik>
|
Нет, я к тому что что угодно в <> - рабочий тег.
|
Часовой пояс GMT +3, время: 01:24. |