Запуск ввода в текстовой области - PullRequest
3 голосов
/ 18 марта 2011

Я заметил новый способ отправки комментариев о статусе в Facebook. В основном, когда вы пишете свой комментарий, у вас нет кнопок, которые нужно нажать, кроме кнопки ввода, которую нужно нажать, чтобы отправить комментарий. Теперь я тоже хотел бы сделать это. И я думал о возможных решениях. Мне приходит в голову, что <input> представлены с нажатой кнопкой ввода, но текстовые сообщения - нет.

  • Либо я пишу ввод (введите текст) и устанавливаю высоту, которая покрывает более чем строку
  • Или я должен добавить текстовую область и каким-то образом отправить эту форму, когда пользователь нажмет ввод.

Что лучше? И если ответ = второй, как я могу это сделать?

Ответы [ 4 ]

8 голосов
/ 18 марта 2011

Это зависит от того, как вы определяете лучше.

Первое лучше всего, если вы хотите действительно простое решение, не требующее JavaScript

Секунды лучше, если вы хотите разрешить разрывы строк втекст.

Если вы хотите использовать решение для текстовой области, вы можете сделать что-то вроде этого: (использует jQuery)

<textarea id="mytextarea"></textarea>
<script>
$('#mytextarea').keypress(function(e){
  if(e.keyCode == 13 && !e.shiftKey) {
   e.preventDefault();
   this.form.submit();
  }
});
</script>

Преимущество этого решения в том, что оно все еще позволяетделать переносы строк, если они просто удерживают клавишу Shift при нажатии Enter.Как в скайпе.

Живой пример здесь: http://jsfiddle.net/MEtGg/

0 голосов
/ 18 марта 2011

Я бы пошел со вторым. И будет использовать JavaScript, чтобы перехватить клавишу ввода и затем вызвать функцию, чтобы сделать отправку. Этот ответ должен соответствовать случаю: Нажать кнопку JavaScript с помощью JavaScript на клавише Enter в текстовом поле

0 голосов
/ 18 марта 2011

Нет необходимости в каркасе (например, jQuery) только для этого:

var textarea = document.getElementById("area");

try {
    textarea.addEventListener("keydown", keyPress, false);
} catch (e) {
    textarea.attachEvent("onkeydown", keyPress);
}

function keyPress(e) {
    if (e.keyCode === 13) {
        alert("Enter key was pressed")
    } else {
        return;
    }
}

Взгляните на пример здесь: http://fiddle.jshell.net/yuCAd/3/

0 голосов
/ 18 марта 2011

Я бы зарегистрировал ключевого слушателя на клавишу ввода, когда фокус находится в вашей текстовой области, это самый распространенный и лучший способ imo.

в jquery вы можете использовать метод keydown / up

...