Javascript Shift + Enter (Firefox) - PullRequest
       16

Javascript Shift + Enter (Firefox)

2 голосов
/ 05 января 2011

Посмотрел и нашел кое-что об этом, но, похоже, ничего не работает, как мне бы хотелось.

Изначально у меня было решение, работающее с Internet Explorer и Chrome, но не с Firefox (что неудовлетворительночтобы я не работал)

Мне нужна простая текстовая область, которая отправляет данные по клавише ввода, но создает новую строку при Shift + Enter.Вот что у меня есть

function goReturn(e,str) {

  var e = (window.Event) ? e.which : e.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
  } else if(e=="13"){
    // ...continue to send data
  }
}

Это отправляет данные при вводе, но также отправляет данные при смене и вводе (что является моей проблемой).

Спасибо за любую помощь

Ответы [ 3 ]

1 голос
/ 05 января 2011

Вы можете отменить распространение события через e.cancel = true;, но я вижу, что в настоящее время вы перезаписываете переменную e (объект события). Если вы измените свой код на следующий, все будет в порядке:

function goReturn(e_obj,str) {

  var e = (window.Event) ? e_obj.which : e_obj.keyCode;
  if (e.shiftKey && e=="13") {
    document.getElementById("wall").value = 
        document.getElementById("wall").value+"\n";
    e_obj.cancel = true;
  } else if(e=="13"){
    // ...continue to send data
  }
}
1 голос
/ 05 января 2011

Поймайте вызов отправки в вашей форме (onsubmit = "...").Там проверьте, был ли последний enter в сочетании с shift.Если да, верните false в запрос на отправку.

Вы также можете попробовать, если достаточно вернуть false на e.shiftKey && e=="13".

0 голосов
/ 04 июня 2011

Я написал плагин jQuery для собственного случая использования, и он может соответствовать вашему: http://cburgmer.github.com/jquery-shiftenter/

Плагин заботится о работе с клавишей возврата, а также отображает подсказку о фокусе, чтобы объяснить поведение.

...