在文本区域中按 Enter 键提交值,然后按 Shift+Enter 键应转到下一行

发布于 2024-12-03 19:14:44 字数 698 浏览 2 评论 0原文

我想要一个聊天框(文本区域),如果用户按 Enter,那么它应该提交聊天,如果用户按 Shift+Enter,那么它应该在新行中输入。

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

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

jsFiddle

另外我想将 \n 放置到位当按下 Enter+Shift 键时。

编辑

我的代码的问题是:-

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

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

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

I want to have a chat box (textarea) where if user press Enter then it should submit the chat, and if user press Shift+Enter then it should enter in a new line.

I tried something but not able to figure out the exact keyup or keydown thing. The code I'm using at the moment is:

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

jsFiddle

Also I want to get the \n in place when Enter+Shift key is pressed.

EDIT

Issue with my code is:-

When i am check the content on client using using alert then it shows the next line. But when i am posting it my rails back end. Then its just a simple string. No new line thing is there.

This is how i am sending chats to rails server.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

似最初 2024-12-10 19:14:44

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

如何检测“shift+enter”并在 Textarea 中生成新行?

I've answered this before. It's a little tricky if the caret is not at the end of the textarea:

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

二货你真萌 2024-12-10 19:14:44
$("textarea").keydown(function(e)
{
    if (e.keyCode == 13)
    {
        if (e.shiftKey) {
            $(this).val( $(this).val() + "\n" );
        }
        else {
            submitTheChat();
        }
    }
});
$("textarea").keydown(function(e)
{
    if (e.keyCode == 13)
    {
        if (e.shiftKey) {
            $(this).val( $(this).val() + "\n" );
        }
        else {
            submitTheChat();
        }
    }
});
七秒鱼° 2024-12-10 19:14:44

考虑改用按键事件。如果您在 jsfiddle 中运行代码,您会发现当您按 Enter 时不会添加新行。

$("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");        
    }    
});

Consider using the keypress event instead. If you run the code in jsfiddle, you'll see that a new line is not added when you press enter.

$("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");        
    }    
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文