Javascript 在文本区域按Enter键并按Shift+键时提交值;输入应该转到下一行
我想有一个聊天框(文本区),如果用户按下回车键,那么它应该提交聊天,如果用户按下Shift+Enter键,那么它应该在一个新行中输入 我尝试了一些东西,但没能弄清楚确切的keypup或keypdown。我目前使用的代码是: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
$("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");
}
});