gpt4 book ai didi

javascript - textarea 控件 - 自定义行为 enter/ctrl+enter

转载 作者:搜寻专家 更新时间:2023-11-01 04:50:57 28 4
gpt4 key购买 nike

我有以下简单的 <textarea>

<textarea id="streamWriter" rows="1" cols="20" placeholder="Writer"></textarea>

我还有以下 jQuery/JavaScript 代码块:

$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode == 13) {
if (e.ctrlKey) {
alert('ctrl enter - go down a line as normal return would');
return true;
}
e.preventDefault();
alert('submit - not your default behavior');
}
});

我试图强制不在正常的回车键按下时创建新的换行符。但如果改为键入 Ctrl+Enter,我想要这种行为。

这确实可以检测到差异,但不会强制执行我需要的行为。如果您使用过 Windows Live Messenger,我需要相同的文本框行为。 Enter 提交(在我的例子中,我将调用一个函数,但阻止 textarea 下一行),然后 Ctrl+Enter 下一行。

解决方案?谢谢。

更新:

$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode == 13) {
if (e.ctrlKey) {
//emulate enter press with a line break here.
return true;
}
e.preventDefault();
$('div#writerGadgets input[type=button]').click();
}
});

以上就是我想做的。只有用换行符模拟回车键的部分。如果您知道,请告诉我如何执行此操作。

最佳答案

使用 keypress 而不是 keydown 效果会好一些,但是不能与 Ctrl 键一起使用;我切换到 shift 键 - jsfiddle .

编辑:据我所知,您将无法跨浏览器始终如一地使用 Ctrl 键,因为浏览器将它用作自己的快捷方式。使用 alt 键时,您会遇到同样的情况。

再次编辑:我有一个适用于 Ctrl 键的解决方案 - jsfiddle .

$('textarea#streamWriter').keydown(function (e) {
if (e.keyCode === 13 && e.ctrlKey) {
//console.log("enterKeyDown+ctrl");
$(this).val(function(i,val){
return val + "\n";
});
}
}).keypress(function(e){
if (e.keyCode === 13 && !e.ctrlKey) {
alert('submit');
return false;
}
});

编辑:这不是 100% 有效,只有当您不在文本中间时才有效。必须想办法让代码在中间处理文本。

顺便说一下...... 你为什么要这样做?如果用户按 enter 换行并且在他们准备好之前突然提交表单,这不会让用户感到困惑吗?

关于javascript - textarea 控件 - 自定义行为 enter/ctrl+enter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187512/

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