Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在文本区域按Enter键并按Shift+键时提交值;输入应该转到下一行_Javascript_Jquery_Keypress - Fatal编程技术网

Javascript 在文本区域按Enter键并按Shift+键时提交值;输入应该转到下一行

Javascript 在文本区域按Enter键并按Shift+键时提交值;输入应该转到下一行,javascript,jquery,keypress,Javascript,Jquery,Keypress,我想有一个聊天框(文本区),如果用户按下回车键,那么它应该提交聊天,如果用户按下Shift+Enter键,那么它应该在一个新行中输入 我尝试了一些东西,但没能弄清楚确切的keypup或keypdown。我目前使用的代码是: $("textarea").keydown(function(e){ if (e.keyCode == 13 && !e.shiftKey) { e.preventDefault(); } }); 我还想在按下En

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

我尝试了一些东西,但没能弄清楚确切的keypup或keypdown。我目前使用的代码是:

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

我还想在按下Enter+Shift键时将
\n
设置到位

编辑

我的代码的问题是:-

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

这就是我向rails服务器发送聊天信息的方式

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

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


考虑改用按键事件。如果您在JSFIDLE中运行代码,您将看到在按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");        
    }    
});

请不要只是链接到JSFIDLE;问题中也要包含代码。你发布的代码有什么问题?对我来说,它就像你描述的那样有效@Matt抱歉,我会记住这件事。问题是当我使用Jquery将这些数据发布到我的后端服务器时。如何识别enter+shift键?在后端,它与不使用enter+shift键相同。在这种情况下,我建议查看Tim Down在上面发布的回复。问题是当我使用Jquery将这些数据发布到后端服务器时。如何识别enter+shift键?在后端,与不使用enter+shift时相同key@Mohit例如我不明白。按下shift+enter键后,文本区域的值将包含一个换行符,当您发布时,此换行符肯定会提交给服务器。@TimDown:我有一个相关问题。在Chrome中,如果我在按下enter键时通过添加新行字符“\n”来处理按键事件,并且如果textarea是可滚动的,滚动条将不工作,我的意思是如果我按下enter键,textarea在我键入时不会滚动。你知道这个问题吗?问题是当我使用Jquery将这些数据发布到我的后端服务器时。如何识别enter+shift键?在后端,它与不使用enter+shift键相同
$("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");        
    }    
});