gpt4 book ai didi

javascript - jquery ctrl+enter 在文本区域输入

转载 作者:可可西里 更新时间:2023-11-01 01:59:59 24 4
gpt4 key购买 nike

我正在尝试在 TEXT 区域控件上重现标准的即时消息行为:输入作为发送按钮。 ctrl+enter 作为真正的输入。

 $("#txtChatMessage").keydown(MessageTextOnKeyEnter);
function MessageTextOnKeyEnter(e)
{
if (!e.ctrlKey && e.keyCode == 13)
{
SendMessage();
return false;
}
else if(e.keyCode == 13)
{
$(this).val($(this).val() + "\n");
}
return true;
}

我尝试过使用注释行和不使用注释行。不行。简单输入按预期工作。关于如何在 ctrl+enter 上添加 enter 有什么想法吗?

关键代码没有问题。它们被正确检测到。所以所有 if 都按预期工作。但是附加新行不正确(在 FF 中,Chrome 工作正常)。所以我需要正确的多浏览器方式来将新行符号插入文本区域。如果不手动添加字符串(通过一些基于 ctrl+enter 的事件)会更好。

更改按键事件无效。 “\r\n” 没有帮助。

测试页位于here

最佳答案

以下内容适用于所有主流浏览器,包括 IE。当您按下 ctrl-enter 时,它的行为就像按下 enter 键一样:

function MessageTextOnKeyEnter(e) {
if (e.keyCode == 13) {
if (e.ctrlKey) {
var val = this.value;
if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") {
var start = this.selectionStart;
this.value = val.slice(0, start) + "\n" + val.slice(this.selectionEnd);
this.selectionStart = this.selectionEnd = start + 1;
} else if (document.selection && document.selection.createRange) {
this.focus();
var range = document.selection.createRange();
range.text = "\r\n";
range.collapse(false);
range.select();
}
}
return false;
}
}

关于javascript - jquery ctrl+enter 在文本区域输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com