Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   обновить textarea (https://javascript.ru/forum/events/25214-obnovit-textarea.html)

wp2 28.01.2012 23:56

обновить textarea
 
ситуация такая, есть кнопка, которая в textarea помещает текст. Это можно сделать двумя способами .innerHTML и .value

Но, value заменяет значки на esc-символы, потому не подходит.

С innerHTML всё нормально, но если хотя бы одну буковку отредактировать в поле textarea, то свойство innerHTML уже не хочет заносить новое значение в поле textarea. Как будто кнопка перестала работать. Отладка показывает, что всё нормально.

Что можете посоветовать? Есть ли какой-то метод обновить содержимое поля textarea?

T-sh 29.01.2012 01:24

всё верно. innerHTML, насколько знаю, только в IE способен изменять значение поля. не предназначен он для этого, ибо innerHTML — работает с DOM, а тут всё такие изменяется значение атрибута value. Поэтому и надо использовать .value.

а как быть со значками, это уже другой вопрос... например, http://world-blog.ru/2562

wp2 29.01.2012 12:18

innerHTML как раз работает и заносит в <textarea> то что надо (в разных браузерах!)
проблема в том, что если что-то отредактировать в этом поле, то уже перестаёт туда заносить.

wp2 29.01.2012 12:19

Цитата:

Сообщение от T-sh
например, http://world-blog.ru/2562

ну... реплейсить конечно выход, просто интересуюсь, можно ли обойтись без этого.

wp2 29.01.2012 12:32

вот вам простенький пример:

<html>
<head>
<title>adf</title>
<body>
<textarea>a</textarea><br>
<input type="button" value="ok" onclick="cl()">
</body>
</html>

<script>
function cl() {
  a = document.body.getElementsByTagName('TEXTAREA');
  a[0].innerHTML += 'a';
};
</script>



кнопка будет добавлять букву "а" каждый раз, когда вы на неё нажмёте. Но если вы удалите хоть одну буковку, кнопка перестанет работать.

wp2 03.02.2012 22:12

придумал интересный способ использования одновременно и value и innerHTML

a[0].value += '<';
a[0].innerHTML = a[0].value;


вот так всё будет работать. Даже если a[0].value += '&lt;';

но... после редактирования, будут почему-то ползти &lt;

wp2 03.02.2012 22:44

ну всё, кажись обдурил:

function cl() {
  a = document.body.getElementsByTagName('TEXTAREA');
  b = document.createElement('TEXTAREA');
  b.innerHTML = '&lt;';
  a[0].value += b.value;
   
};


то есть, создаю невидимый textarea (который уже нельзя будет редактировать, а значит он будет работать). В него загоняю что угодно (оно уже будет без esc-символов благодаря свойству innerHTML).


Часовой пояс GMT +3, время: 12:47.