【问题标题】:Submit value on pressing Enter in textarea and pressing Shift+Enter should go to next line在 textarea 中按 Enter 并按 Shift+Enter 时提交值应该转到下一行
【发布时间】:2011-11-12 18:49:25
【问题描述】:

我想要一个聊天框(textarea),如果用户按 Enter 则它应该提交聊天,如果用户按 Shift+Enter 则它应该在一个新行中输入。

我尝试了一些东西,但无法弄清楚确切的 keyup 或 keydown 东西。我现在使用的代码是:

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

jsFiddle

我还想在按下 Enter+Shift 键时获得\n

编辑

我的代码的问题是:-

当我使用警报检查客户端上的内容时,它会显示下一行。但是当我发布它时,我的导轨后端。然后它只是一个简单的字符串。没有新线的东西。

这就是我将聊天发送到 Rails 服务器的方式。

  $.post("/incomingchat", { body:$("#chat_" + group_id).val() },
   function(data){
        // do something..
    });

【问题讨论】:

  • 请不要只是链接到 jsfiddle;始终在问题中包含代码。
  • 您发布的代码有什么问题?对我来说它就像你描述的那样工作? jsfiddle.net/Su5ts/25
  • @Matt 抱歉,请记住这件事。

标签: javascript jquery keypress


【解决方案1】:

我以前回答过这个问题。如果插入符号不在文本区域的末尾,那就有点棘手了:

How do I detect "shift+enter" and generate a new line in Textarea?

【讨论】:

  • 问题是当我使用 Jquery 将这些数据发布到我的后端服务器时。我如何识别 enter+shift 键?在后端与没有 enter+shift 键相同
  • @Mohit:我不明白。按shift+enter后textarea的值会包含一个换行符,这个换行符一定会在你发帖的时候提交给服务器。
  • @TimDown:我有一个相关的问题。在Chrome中,如果我通过添加新行字符'\n'来处理按下回车键时的按键事件,并且如果textarea是可滚动的,则滚动条将不起作用,我的意思是如果我按下回车键,textarea不会滚动当我打字的时候。你对这个问题有什么想法吗?
【解决方案2】:
$("textarea").keydown(function(e)
{
    if (e.keyCode == 13)
    {
        if (e.shiftKey) {
            $(this).val( $(this).val() + "\n" );
        }
        else {
            submitTheChat();
        }
    }
});

【讨论】:

  • 问题是当我使用 Jquery 将这些数据发布到我的后端服务器时。我如何识别 enter+shift 键?在后端与没有 enter+shift 键相同
【解决方案3】:

考虑改用按键事件。如果你在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");        
    }    
});

【讨论】:

  • 问题是当我使用 Jquery 将这些数据发布到我的后端服务器时。我如何识别 enter+shift 键?在后端与没有 enter+shift 键相同
  • 好的,我明白了。在这种情况下,我建议查看 Tim Down 在上面发布的回复。
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 2011-05-29
  • 2016-10-22
  • 2017-03-17
  • 2014-04-04
  • 1970-01-01
  • 2013-09-17
相关资源
最近更新 更多