Отправьте значение, нажав Enter в textarea и нажав Shift + Enter, чтобы перейти к следующей строке

Я хочу иметь окно чата (textarea), в котором, если пользователь нажимает Enter, он должен отправить чат, а если пользователь нажимает Shift + Enter, то он должен войти в новую строку.

Я пытался что-то, но не смог выяснить точную информацию о keyup или keydown. Код, который я использую в данный момент:

$("textarea").keydown(function(e){
    if (e.keyCode == 13 && !e.shiftKey)
    {
        e.preventDefault();
    }
}); 

jsFiddle

Также я хочу, чтобы \n было на месте при нажатии клавиши Enter + Shift.

ИЗМЕНИТЬ

Проблема с моим кодом: -

Когда я проверяю содержимое на клиенте с помощью оповещения, отображается следующая строка. Но когда я отправляю это, мои рельсы назад. Тогда это просто простая строка. Здесь нет новой строки.

Вот так я отправляю чаты на сервер rails.

  $.post("/incomingchat", { body:$("#chat_" + group_id).val() },
   function(data){
        // do something..
    });
7 голосов | спросил Mohit Jain 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 12:07:28 +0400 2011, 12:07:28

3 ответа


0

Я отвечал на это раньше. Немного сложно, если каретка находится не в конце текстовой области:

Как определить «shift + enter» и создать новую строку в Textarea?

ответил Tim Down 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 12:17:48 +0400 2011, 12:17:48
0
$("textarea").keydown(function(e)
{
    if (e.keyCode == 13)
    {
        if (e.shiftKey) {
            $(this).val( $(this).val() + "\n" );
        }
        else {
            submitTheChat();
        }
    }
});
ответил AndreyKo 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 12:18:30 +0400 2011, 12:18:30
0

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

$("textarea").keypress(function(e){
    if (e.keyCode == 13 && !e.shiftKey)
    {        
        e.preventDefault();
        //now call the code to submit your form
        alert("just enter was pressed");
        return;
    }

    if (e.keyCode == 13 && e.shiftKey)
    {       
        //this is the shift+enter right now it does go to a new line
        alert("shift+enter was pressed");        
    }    
});
ответил pedrodg 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 12:24:42 +0400 2011, 12:24:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132