Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

по ctrl+Enter перенос курсора на след. строку в textarea (Crux)
Author Message
Crux
Заглянувший



Joined: 06 Aug 2010
Posts: 3
Карма: 1
   поощрить/наказать


PostPosted: Fri Aug 06, 2010 8:28 am (написано за 1 секунду)
   Post subject: по ctrl+Enter перенос курсора на след. строку в textarea
Reply with quote

Есть форма, в ней поле-textarea.
надо чтоб при нажатии на Enter форма субмитилась, а при нажатии на Ctrl+Enter происходил перенос курсора на новую строку.

Собственно задача достаточно проста и решается на раз два, но во много "уважаемом" браузере Internet Explorer возникла проблемка:
- при нажатии на Ctrl+Enter курсор сдвигается на 1-2 знака вправо. То есть он не перескакивает на новую строку. При этом если начать писать, то текст будет на новой строке. Но визуально получается обманка.

В чём может быть проблема? кто подскажет?
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Fri Aug 06, 2010 9:24 am (спустя 56 минут; написано за 5 секунд)
   Post subject:
Reply with quote

Crux,
код в студию.
Back to top
View user's profile Send private message Send e-mail
Crux
Заглянувший



Joined: 06 Aug 2010
Posts: 3
Карма: 1
   поощрить/наказать


PostPosted: Fri Aug 06, 2010 10:51 am (спустя 1 час 27 минут; написано за 6 минут 34 секунды)
   Post subject:
Reply with quote

гм... код говорите в студию... попробую.

для текстареа на событие onkeyup вешаем функцию ctrlEnter
Code (html): скопировать код в буфер обмена
<form (december.com/html/4/element/form.html) id="message_tab_frm"> (december.com/html/4/element/.html)<textarea (december.com/html/4/element/textarea.html) name="bla_post[message]" onkeyup="ctrlEnter(event);"> (december.com/html/4/element/.html)</textarea></form>
функция ctrlEnter отлавливает нажатые клавиши и обрабатывает два состояния:
1. просто нажат Enter, оно нас не интересует, т.к. работает нормально.
2. Enter нажат в сочетании c Ctrl
Code (JavaScript): скопировать код в буфер обмена
ctrlEnter = function(e){
  if (((e.keyCode == 13) || (e.keyCode == 10)) && (e.ctrlKey == false)){
    //субмитим форму
  }
  if (((e.keyCode == 13) || (e.keyCode == 10)) && (e.ctrlKey == true)){
      func('\r\n');
  }
}
func = function(val){
    document.getElementById('message_tab_frm').elements['bla_post[message]'].focus();
    if(document.selection){
      document.getElementById('message_tab_frm').document.selection.createRange().text = document.getElementById('message_tab_frm').document.selection.createRange().text+val;
    }
    else if(document.getElementById('message_tab_frm').elements['bla_post[message]'].selectionStart != undefined){
      var element = document.getElementById('message_tab_frm').elements['bla_post[message]'];
      var str     = element.value;
      var start   = element.selectionStart;
      var length  = element.selectionEnd - element.selectionStart;
      element.value = str.substr(0, start) + str.substr(start, length) + val + str.substr(start + length);
    }
    else{
      document.getElementById('message_tab_frm').elements['bla_post[message]'].value += val;
    }
   
  }
Back to top
View user's profile Send private message
Cayman
Заглянувший



Joined: 21 Aug 2010
Posts: 2
Карма: 0
   поощрить/наказать

Location: Новосибирск

PostPosted: Sat Aug 21, 2010 8:35 am (спустя 14 дней 21 час 43 минуты; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

В каких версия IE возникает подобное ?
Как вариант забейте на IE я в основном так и делаю ))
Back to top
View user's profile Send private message
Crux
Заглянувший



Joined: 06 Aug 2010
Posts: 3
Карма: 1
   поощрить/наказать


PostPosted: Mon Aug 23, 2010 11:32 am (спустя 2 дня 2 часа 57 минут; написано за 58 секунд)
   Post subject:
Reply with quote

Cayman wrote:
В каких версия IE возникает подобное ?
в IE 7 и в IE 8 точно.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML