我想要一个聊天框(textarea),如果用户按Enter键,则应提交聊天,如果用户按Shift + Enter,则应输入新行。
我尝试了一些但却无法找出确切的keyup或keydown事情。我目前使用的代码是:
$("textarea").keydown(function(e){
if (e.keyCode == 13 && !e.shiftKey)
{
e.preventDefault();
}
});
我还希望在按下Enter + Shift键时使\n
到位。
修改
我的代码问题是: -
当我使用alert检查客户端上的内容时,它会显示下一行。但是当我发布它时,我的轨道会结束。然后它只是一个简单的字符串。没有新线路。
这就是我向rails服务器发送聊天的方式。
$.post("/incomingchat", { body:$("#chat_" + group_id).val() },
function(data){
// do something..
});
答案 0 :(得分:3)
我之前已经回答了这个问题。如果插入符号不在textarea的末尾,那有点棘手:
How do I detect "shift+enter" and generate a new line in Textarea?
答案 1 :(得分:3)
$("textarea").keydown(function(e)
{
if (e.keyCode == 13)
{
if (e.shiftKey) {
$(this).val( $(this).val() + "\n" );
}
else {
submitTheChat();
}
}
});
答案 2 :(得分:1)
请考虑使用keypress事件。如果你在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");
}
});