在textarea中按Enter键提交值,按Shift + Enter键应转到下一行
我想要一个聊天框(textarea),如果用户按Enter键,则应提交聊天,如果用户按Shift + Enter,则应输入新行。
我尝试了一些但却无法找出确切的keyup或keydown事情。 我目前使用的代码是:
$("textarea").keydown(function(e){ if (e.keyCode == 13 && !e.shiftKey) { e.preventDefault(); } });
的jsfiddle
另外,我想在按下Enter + Shift键时将\n
到位。
编辑
我的代码问题是: –
当我使用alert检查客户端上的内容时,它会显示下一行。 但是当我发布它时,我的轨道结束了。 然后它只是一个简单的字符串。 没有新线路的东西。
这就是我向rails服务器发送聊天的方式。
$.post("/incomingchat", { body:$("#chat_" + group_id).val() }, function(data){ // do something.. });
我以前回答过这个问题。 如果插入符号不在textarea的末尾,这有点棘手:
如何检测“shift + enter”并在Textarea中生成一个新行?
$("textarea").keydown(function(e) { if (e.keyCode == 13) { if (e.shiftKey) { $(this).val( $(this).val() + "\n" ); } else { submitTheChat(); } } });
请考虑使用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"); } });