Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в textarea перети на новую строчку нажав Shift 
V
    Опции темы
Elfet
  Дата 1.2.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Как в textarea перети на новую строчку нажав Shift + Enter? А по Enter отправить форму?  smile 


--------------------
PM MAIL WWW Skype   Вверх
dsCode
Дата 2.2.2008, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Elfet,

- повесить onkeydown на texare'ю;
- обработать в нем e.keyCode (13) и e.shifKey (если оба присутствуют - сделать this.value += '\n', если только первый - отправка формы), также предотвратить дефолтные события


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Elfet
Дата 3.2.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ок, спасибо!


--------------------
PM MAIL WWW Skype   Вверх
Elfet
  Дата 6.2.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



А как сделать так что бы ещё при нажатии на enter новая строчка не появлялась?
Код

function Keydown(evt) {
    var text = document.getElementById("text");
    evt = (evt) ? evt : ((window.event) ? event : null )
    if(evt) {
        if(evt.keyCode == 13 && evt.shifKey) {
            text.value += '\n';
        } else if(evt.keyCode == 13) {
            text.value = ''; 
                         ВОТ ТУТ
        }
    }
}



Это сообщение отредактировал(а) Elfet - 6.2.2008, 11:45


--------------------
PM MAIL WWW Skype   Вверх
Ghirik
Дата 6.2.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Наверное, вместо text.value = ''; написать evt.returnValue; и следом сабмит вашей формы, попробуйте.



--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Elfet
Дата 6.2.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



У меня никакой формы нет. только textarea. evt.returnValue?


--------------------
PM MAIL WWW Skype   Вверх
Ghirik
Дата 6.2.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

evt.returnValue? 


Да, этим вы отмение обработчика события имеющегося по умолчанию. Прервете обработку события (перевод на новую строку). А форму можете не отправлять, просто, Вы в первом посте написали про отправку формы по нажатию Enter.



--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Elfet
Дата 6.2.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Да, точно. Неточность smile Но это тут не так важно.

Так как этим воспользоваться? Как прервать событие?

Код

<textarea id="text" style="width:100%;height:45px;" onkeydown="Keydown(event);"></textarea>


Код

function Keydown(evt) {
    var text = document.getElementById("text");
    evt = (evt) ? evt : ((window.event) ? event : null )
    if(evt) {
        if(evt.keyCode == 13 && evt.shiftKey) {
            text.value += '\n';
            evt.returnValue();
        } else if(evt.keyCode == 13) {
            //Send(text.value);
            text.value = '';
            evt.returnValue();
        }
    }
}



--------------------
PM MAIL WWW Skype   Вверх
ksnk
Дата 6.2.2008, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Как-то мучался с такого рода обработкой, сочинилось вот это
Код

function clearEv(e){
    if (e.preventDefault) e.preventDefault()
    e.cancelBubble = true;
    if(e.stopPropagation) e.stopPropagation();
    return (e.returnValue = false);
}


писать нужно return clearEv(evt);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Elfet
Дата 6.2.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



evt.returnValue = null; - тока в IE работает?

Добавлено через 1 минуту и 39 секунд
ksnk, ооо!! отлично работает! везде?


--------------------
PM MAIL WWW Skype   Вверх
ksnk
Дата 7.2.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Я пока не встречал мест, где бы она не работала ;-) Я, правда, бываю не везде. Ie-6/7 FF, Опера 9.25... smile 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ghirik
Дата 7.2.2008, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Я сам путаный, Вы меня ещё запутали... smile 

Строчка

Код

evt.returnValue = false;


отменит выполнение обработки события evt, в данном случае keydown. Но чтобы не произошла вствка символа, по моему, нужно отменять keypress(не уверен).

Вы опишите конкретно чего Вы добиваетесь. Вставляя строчку text.value = ''; Вы полностью затираете всё, что было набрано. Так и нужно? Нажатие enter при нажатом шифте и так приводит к простому переводу строки. Зачем тогда вы всё это делаете?

Добавлено через 2 минуты и 47 секунд
Во блин, опоздал с постом. Всё время забываю обновить страницу.... наоткрываю штук двадцать, так и висят.... smile 


ksnk, как вы догадались чего Elfet хочет добиться? smile

Добавлено через 8 минут и 42 секунды
ksnk, а что returnValue = false работает не везде? Я использую, ошибок не видел... Только я обработчиков вешаю свойством объекта.


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 7.2.2008, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Ghirik @  7.2.2008,  00:34 Найти цитируемый пост)
ksnk, как вы догадались чего Elfet хочет добиться? 
 Дык  smile 
Цитата(Elfet @  6.2.2008,  11:41 Найти цитируемый пост)
А как сделать так что бы ещё при нажатии на enter новая строчка не появлялась?


просто недавно к своему калькулятору в окно редактирования прикручивал Tab/Shift-Tab чтобы он не переходил по контролам, а вставлял - сдвигал блок текста... Оперу, кстати, так толком и не уговорил...
Так что такие листинги, пока,  узнаю "в лицо" ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ghirik
Дата 7.2.2008, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

просто недавно к своему калькулятору в окно редактирования прикручивал Tab/Shift-Tab чтобы он не переходил по контролам, а вставлял - сдвигал блок текста... Оперу, кстати, так толком и не уговорил...


Я такую фичу тоже проделывал, только давно... тогда совсем криво писал. Но у меня всё уговорилось, только заметно было, как курсор обратно встает. smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 7.2.2008, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Ghirik @  7.2.2008,  00:57 Найти цитируемый пост)
только заметно было, как курсор обратно встает
 Угу... В Опере вот так и осталось, а IE и FF удалось полностью уговорить игнорировать табуляцию, а делать только то, что надо...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.