Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: textarea и клавиша enter

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: запись клавиши enter в переменную
gluck11
Отправлено: 13 Декабря, 2013 - 14:07:22
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




есть элемент формы textarea к нему прикручено событие onKeyUp, которое запускает функцию записи нажатых клавиш в div блок. Допустим я нажимаю клавишу enter и получается что в div блок записывается какое то значение. Но когда я набираю определенное количество символов в первой строке то происходит автоматический перенос каретки на вторую строку и клавиша enter никуда не записывается. Как ее можно записать допустим в переменную?
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Декабря, 2013 - 13:29:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Такие действия надо сразу на div'е делать - всеравно же все клавиши перехватывает.
 
 Top
gluck11
Отправлено: 14 Декабря, 2013 - 16:49:41
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Такие действия надо сразу на div'е делать - всеравно же все клавиши перехватывает.

да, но как записать клавишу enter в div?

(Отредактировано автором: 14 Декабря, 2013 - 16:50:08)

 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Декабря, 2013 - 17:06:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
gluck11
Отправлено: 14 Декабря, 2013 - 17:16:32
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:

О спасибо, щас попробую внедрить
 
 Top
gluck11
Отправлено: 15 Декабря, 2013 - 09:03:16
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Работает, но сейчас возникла проблема с определением конца строки на JavaScript.
А точнее, когда необходимо вставить "\r\n"
Для первой строки составил вот такой код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if (event.keyCode != 8  && symbol == 10) // если нажата не клавиша backspace и количество набранных символов == 10, то...
  3.  {
  4. if (val.search('\r\n') == -1 && val.search(' ') != -1) {    // если в строке нету '\r\n' и есть пробел, то...  
  5. var index = val.lastIndexOf( ' ' );                                                              
  6. document.getElementById("text").value = val.slice( 0, index ) + '\n' + val.slice( index + 1 ) ; // заменить  последний пробел на '\r\n'
  7. }else{  
  8. document.getElementById("text").value = val + '\r\n';
  9. }
  10. }
  11.  

(Отредактировано автором: 15 Декабря, 2013 - 09:43:29)

 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Декабря, 2013 - 10:11:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Его надо вставлять только тогда, когда энтер нажали. Зачем там магия с пробелами?
 
 Top
gluck11
Отправлено: 15 Декабря, 2013 - 10:42:56
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




DeepVarvar пишет:
Его надо вставлять только тогда, когда энтер нажали. Зачем там магия с пробелами?

ентер и так вставляется если пользователь ее нажимает. Но когда количество символов в одной строке textarea доходит до предела при wrap="hard", то происходит перенос последнего слова в новую строку. Или если строка без пробелов то нажатый символ начинается с новой строки. Т.е. получается что если пользователь просто набирает текст не воспользовавшись клавишей ентер, то на выходе у меня получается строка без "\r\n" .
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Декабря, 2013 - 11:39:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я говорю - в диве перехватывать нажатия. Нафига там вообще текстария нужна?
Стоп, может я бред написал, щас гляну точно.
(Добавление)
Да, можно. Стираем в текстарии каждый символ, который в неё пишут, предварительно перехватив это символ и записав в целевой див.
(Добавление)
Как вариант вообще отказаться от текстарии - при клике на псевдотекстарию (тоже див) ставим ей некий класс, типа это текстария в фокусе, и дальше делаем там что хотим. Пока пользователь не кликнул в другом месте мышой (или на TAB) перехватываем нажатия клавиш для псевдотекстарии. А если кликнул или таб нажал - убираем класс у элемента.
 
 Top
Deonis
Отправлено: 15 Декабря, 2013 - 12:02:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




gluck11, а можно поинтересовать целью этих манипуляций?
Я к тому, что возможно есть гораздо простые способы для решения конкретной задачи.
Я даже не исключаю, что вас бы устроил вариант с использованием атрибута contenteditable
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB