Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ввод и отображение текста однеовременно
 
 автор: jeans1986   (22.03.2010 в 12:43)   письмо автору
 
 

Мне надо сделать на странице поле для ввода текста и чтоб при изменении текста (ввод с клавиатуры, копипаст текстаб удаление текста и т.д), чтоб отображалось бы в каком то слое. Если есть готовыен примеры скиньте ссылку или как я могу сделать сам. Заранее всех благодарю.

  Ответить  
 
 автор: АЯ   (22.03.2010 в 13:17)   письмо автору
 
   для: jeans1986   (22.03.2010 в 12:43)
 

<textarea>
Если надо копию этого же текста со всеми его динамическими изменениями где-то
в ещё одном месте, то для кроссбраузерности необходимо включить таймер,
который будет считывать содержимое этой текстовой области
и помещать копию этого содержимого в том самом нужном вам месте.
По иному (без таймера) кроссбраузерно не получится, ибо только в браузере MSIE
возможно отследить любые изменения текстовой области без таймера.
</textarea>


Пример кода:
<script>
var mTIMER;
function mF ()
{
var t = document.getElementById ('mTXT').value;

t = t.replace (/\</g, '&lt;').replace (/\>/g, '&gt;');   //замена символов тегов
t = t.replace (/\r/g, '').replace (/\n/g, '<br>');       //замена переносов строк
t = t.replace (/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'); //замена табуляции

document.getElementById ('mDV').innerHTML = t;
mTIMER = setTimeout (mF, 100);
}
</script>
<body>
<textarea id="mTXT" style="width: 100%; height: 40%" onfocus="mF ()" onblur="clearTimeout (mTIMER)"></textarea>
<hr>
<div id="mDV" style="width: 100%; height: 40%; background: yellow"></div>
</body>

  Ответить  
 
 автор: DJ Paltus   (22.03.2010 в 13:38)   письмо автору
 
   для: АЯ   (22.03.2010 в 13:17)
 

А такой метод чем плох? (Чую, нарвусь на нотацию :-))

<script type="text/javascript">
    function updateIt(b){
        var a = b.value;
        var c = document.getElementById('here');
        if(document.all){
            c.innerText = a;
            }
        else{
            c.textContent = a;
            }
        }
</script>
...
<textarea onkeyup="updateIt(this);"></textarea>
<pre id='here'></pre>

  Ответить  
 
 автор: АЯ   (22.03.2010 в 13:40)   письмо автору
 
   для: DJ Paltus   (22.03.2010 в 13:38)
 

Читаем ВНИМАТЕЛЬНО исходные требования:
и чтоб при изменении текста (ввод с клавиатуры, копипаст текстаб удаление текста и т.д)

  Ответить  
 
 автор: DJ Paltus   (22.03.2010 в 13:57)   письмо автору
 
   для: АЯ   (22.03.2010 в 13:40)
 

Эх ух. Да, я совсем не учел, что для многих "копипаст" - это не только и не столько ctrl+v.
Действительно, без таймера никуда.

  Ответить  
 
 автор: jeans1986   (22.03.2010 в 14:36)   письмо автору
 
   для: АЯ   (22.03.2010 в 13:17)
 

Большое спасибо. Всё работает. Но когда юзер вводит HTML текст то он форматирует строку. Т.е еслт вписать <b>my text</.b>, то будет текст будет отображаться жирным. Как сделать чтоб HTML теги конвертировались и отображались в тексте. Т.е мне нуже аналог функции в PHP - htmlspecialchars. Заранее благодарю.

  Ответить  
 
 автор: АЯ   (22.03.2010 в 20:06)   письмо автору
 
   для: jeans1986   (22.03.2010 в 14:36)
 

"Терпеть ненавижу"(с)

Сказали спасибо.
Отметили, что все работает.
А потом пишете фигню, совершенно не связанную с тем кодом, за который якобы благодарите.

Вы, блин, введите сначала <b>my text</b> в <textarea> и посмотрите - что именно отобразится.

"Терпеть ненавижу"(с)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования