Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Превью textarea в отдельном блоке (https://javascript.ru/forum/dom-window/41825-prevyu-textarea-v-otdelnom-bloke.html)

Undrew 30.09.2013 19:26

Превью textarea в отдельном блоке
 
В общем ситуация такая: есть php форма заполнения информации о себе. Как сделать, чтобы заполняя поле textarea одновременно выводился этот же текст в другом блоке? Вот сама строчка:
<textarea rows="5" cols="53" class="medium" name="text" id="text" onKeyUp="check_len(\'text\', 75)'.$text.'"></textarea>

P.S.
В php новичок, помогите кто знает.

danik.js 30.09.2013 21:40

Цитата:

Сообщение от Undrew
есть php форма

Эт че еще такое?
Цитата:

Сообщение от Undrew
Как сделать, чтобы заполняя поле textarea одновременно выводился этот же текст в другом блоке?

Слушай событие input (для IE8 - propertychange) и в обработчике события обновляй превью.
Цитата:

Сообщение от Undrew
В php новичок, помогите кто знает.

А причем тут php? И вобще, это форум JS, а не PHP если ты не заметил.


Erolast 01.10.2013 16:25

php - это серверный язык. Файл php запускается и исполняется НА СЕРВЕРЕ, он не может организовать какую-либо динамику на самой странице. Он может только динамически создавать страницы и работать с файлами на сервере.
Для организации динамики на уже загруженной пользователем странице используется javascript, который является клиентским языком программирования.
Конкретно в этом случае нужно на элемент textarea повесить обработчик события keydown (событие keydown срабатывает при нажатии клавиши), приравнивающий содержание нужного блока к содержанию textarea. Показываю.

<!DOCTYPE html>
<html>
<head>
<title>Я - тестовая страница</title>
</head>
<body>
<textarea  rows="5" cols="53" class="medium" name="text" id="text" onKeyUp="check_len(\'text\', 75)'.$text.'" onkeydown="document.getElementById('div_with_text').innerHTML = this.value"></textarea>
<div id="div_with_text"></div>
</body>
</html>

Undrew 03.10.2013 15:46

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

BETEPAH 03.10.2013 19:53

Цитата:

Сообщение от Undrew
как сделать чтобы одинаково написанный текст отображался без запоздания на один символ?

<textarea  rows="5" cols="53" class="medium" name="text" id="text" onkeyup="document.getElementById('div_with_text').innerHTML = this.value"></textarea>
<div id="div_with_text"></div>

danik.js 03.10.2013 20:05

Использовать innerHTML не очень безопасно - юзер может всю верстку поломать пока набирает текст.
<textarea  rows="5" cols="53" class="medium" name="text" id="text" ></textarea>
<div id="div_with_text"></div>
<script>
(function(){
    var input = document.getElementById('text');
    var preview = document.getElementById('div_with_text');
    preview.style.whiteSpace = 'pre';

    input['oninput' in input ? 'oninput' : 'onpropertychange'] = function() {
        preview['innerText' in preview ? 'innerText' : 'textContent'] = input.value;
    };
})();
</script>

Undrew 04.10.2013 18:16

Спасибо большое! Вы мне очень помогли.


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