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

HTML+CSS+JavaScript

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

 

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

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

тема: Как отследить изменение текста в <textarea>?
 
 автор: Николай2357   (06.07.2008 в 17:51)   письмо автору
 
 

Здравствуйте.
Возможно ли отследить изменение текста в <textarea> при вставке из буфера?
Событие onchenge неподходит, оно наступает только при потере фокуса, а нужно сразу после вставки.
Спасибо.

   
 
 автор: PAT   (06.07.2008 в 19:10)   письмо автору
 
   для: Николай2357   (06.07.2008 в 17:51)
 

Отследить НАПРЯМУЮ событие изменения свойства textarea.value можно только в MSIE (там работает и ONPASTE, и ONPROPERTYCHANGE). В других браузерах это "не катит".

Однако есть простейший способ, о котором многие забывают: по setInterval проверять изменение этого самого textarea.value. Всё получается довольно просто по исполнению.
setInterval , кстати, если на него не вешать очень большую вычислительную работу, практически не грузит парсер браузера.

   
 
 автор: Николай2357   (06.07.2008 в 19:41)   письмо автору
 
   для: PAT   (06.07.2008 в 19:10)
 

Спасибо, я думал про это, только мное нужно отделить именно текст, введенный из буфера, так как он вводится еще скриптом и "вручную". Можно было бы прикрутить его, если бы отследить клик по контекстменю, а так наверное довольно сложная цепочка получится. Ведь можно вызвать меню, а потом передумать, алгоритм нарушится. Там еще "выделить все" есть. В общем проблема, как я понял, нерешаема.

   
 
 автор: Николай2357   (06.07.2008 в 20:41)   письмо автору
 
   для: Николай2357   (06.07.2008 в 19:41)
 

Эврика!!! Все просто! Нужно функцию поставить событием oncontextmenu в ожидание, запускать ее onmausemuve, а onkeydown и скриптом запретить выполнение функции. Проверил - работает!

   
 
 автор: PAT   (07.07.2008 в 08:17)   письмо автору
 
   для: Николай2357   (06.07.2008 в 20:41)
 

А возможность изменения содержимого через браузерное меню предусмотрели?
Кликнет юзер по TEXTAREA (даст ему фокус), войдет затем в меню Правка и выберет там пункт "Отменить", или "Повторить", или "Вставить", или "Вырезать"... И что ваш скрипт в этом случае делать будет? :-)

А если юзер будет отменять, повторять, вставлять или вырезать, используя комбинации клавиш Ctrl+Z, Ctrl+Y, Ctrl+V, Ctrl+X ?

   
 
 автор: Николай2357   (07.07.2008 в 22:18)   письмо автору
 
   для: PAT   (07.07.2008 в 08:17)
 

Он на то и скрипт, чтобы отследить изменение текста в арее. Если юзер чтото делает, нужно к этому и привязываться. Пусть куда угодно жмет, есть onkeydown и onkeyup. Первым запоминаем текст, вторым сравниваем. Впринципе я много вариантов испробывал, пока тьфу-тьфу. А вот с контекстменю была проблема, ведь после вставки текста никаких событий не просходит. Значит нужно изобрести. Повесил проверку на onmausemuve, рука у юзера все равно дрогнет. Как результат получаю - опять в ожидание контекст меню.
Работает!

   
 
 автор: PAT   (08.07.2008 в 00:43)   письмо автору
 
   для: Николай2357   (07.07.2008 в 22:18)
 

Вы не поняли.
На верхней части любого браузера есть панель: Файл--Правка--Вид--
Вот там с помощью мыши можно кликать на Вставку, Отмену,Повторение,Вырезание..
И никакой скрипт (отслеживающий мышь или клавиатуру) этого дела не "поймает".
Кроме ONPOPERTYCHANGE в MSIE.
Или по setInterval - везде.

   
 
 автор: Николай2357   (09.07.2008 в 16:51)   письмо автору
 
   для: PAT   (08.07.2008 в 00:43)
 

Спасибо, только я все правильно сделал. У меня оnblur и onfocus oбработаны уже, а вот при вызове контекстного меню арея фокус не теряет. Вот в чем была загвоздка. А так, пусть жмет куда хочет, лишь бы что-нибудь происходило.

   
 
 автор: Sanya_Zol   (08.07.2008 в 02:36)
 
   для: Николай2357   (06.07.2008 в 17:51)
 

обрабатывай события onchange onkeypress onkeydown onkeyup

   
Rambler's Top100
вверх

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